Re[3]: изменение параметров печати принтера
От: Patalog Россия  
Дата: 25.05.02 08:55
Оценка:
Здравствуйте magcyril, Вы писали:

[skip]
M>я пытался менять только pDevMode->dmPrintQuality (и dmFields = DM_PRINTQUALITY соответственно) причем как с вызовом DocumentProperties (рекомендация MSDN), так и без него (GetPrinter может и так получить PRINTER_INFO_2), но при вызове SetPrinter всегда получаю ошибку "Access is denied"

Не знаю что у тебя за нужда вызывать именно SetPrinter? Эта функция помимо DEVMODE изменяет еще много параметров, на изменение которых у тебя прав по видимому нет. Я делаю так:
PRINTDLG pd;
const int size = sizeof(pd);
memset(&pd, 0, size);
pd.lStructSize = size;
BOOL res = ::PrintDlg(&pd);
if(res) {
    DEVMODE* dm = reinterpret_cast<DEVMODE*>(::GlobalLock(pd.hDevMode));
    if(dm) {
        dm->dmFields = DM_ORIENTATION | DM_PRINTQUALITY;
        dm->dmOrientation = DMORIENT_LANDSCAPE;
        dm->dmPrintQuality = 600;
        ::GlobalUnlock(pd.hDevMode);
    }
        char* prn_name = reinterpret_cast<char*>(dm->dmDeviceName);
        HANDLE printer = NULL;
    BOOL res = OpenPrinter(prn_name, &printer, NULL);
        if(res) {
                // TO DO ...
                ClosePrinter(printer);
        }
}


ЗЫж А вообще, прислал бы код, а то так гадать можно долго...
Почетный кавалер ордена Совка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.