Текущий архив: 2003.02.17;
Скачать: CL | DM;
ВнизDocumentProperties и W inXP/ Win9x Найти похожие ветки
← →
spleen (2003-01-04 10:49) [0]доброе время суток Мастера.....
возникла трабла..писался код по настройке принтера на Delphi 5 под WinXP (привожу ниже)
_____________
VAR
h_dc,h_dc_mem:variant;
id_mode, d_mode: DEVMODE;
hPrinter, dc_bitmap : Thandle;
pnt : ^DEVMODE;
p:Thandle;
di:DOCINFO;
printerindex:integer;
var1,var2:pchar;
num_bytes:integer;
h_dc_result:variant;
____________
var2 :=pchar(Printer.Printers.Strings[printerindex]);
OpenPrinter(var2, hPrinter, nil);
///do not work
num_bytes := DocumentProperties(0, HPrinter, var2, id_mode, id_mode, 0);
p:=GlobalAlloc(GMEM_FIXED,num_bytes);
pnt:=GlobalLock(p);
DocumentProperties(0, hPrinter, var2, pnt^, id_mode, DM_OUT_BUFFER);
d_mode:=pnt^;
var1 :=pchar("winspool");
d_mode.dmDuplex:=dmdup_vertical;
d_mode.dmPrintQuality:=dmres_draft;
d_mode.dmYResolution:=-1;
d_mode.dmColor:=dmcolor_monochrome;
d_mode.dmDisplayFlags:=dm_grayscale;//!
d_mode.dmBitsPerPel:=8;
d_mode.dmFields:=d_mode.dmFields or DM_Duplex or dm_printquality or dm_yresolution or dm_color or dm_displayflags or dm_bitsperpel;
h_dc_result:=createDC(var1,var2,nil,@d_mode);
_____________
под winXP все бегает и пляшет...а вот под Win9x с места ///do not work тишина...возвращает -1 и все..и соответственно ничего дальше не работает
помогите плиз разобраться...может с параметрами чаго не того..но почему под WinXP все работает....-(
жду дельных советов
← →
Alex Konshin (2003-01-04 11:10) [1]А hPrinter нормальный возвращает?
← →
spleen (2003-01-04 13:09) [2]там код я исправила, уже все берет и handle и ссылки остальные все нормально, hPrinter тоже нормальный,...но..я щас начну громко смеятся...опять же под 98 настройки хавает даже отправляет на печать, в списке принтера задание появляется, вот тока размером вместо 600-800 по 200Кб-((...так вот, а на печать ничего не уходит..даже листик с киким-нибудь error не вылазит-((
и опять же под WinXP все чудненько пляшет и бегает......
если разбираешься в этом,я выложу новый исходник?!...
← →
Alex Konshin (2003-01-04 20:58) [3]А сначала можно спросить, почему так сложно?
Почему не используешь модуль Printers?
Я понимаю, что они там несколько переусердствовали в сокрытии всего, чего скрывать не следовало бы, но теоретически даже без хакерства можно по-честному вытащить handle для DeviceMode, по нему получить сам devmode, ну и менять там то, что надо.
Если же немного не по-честному, то совсем просто - это все уже есть в объекте TPrinter, нужно только вытащить.
Смотри, например, как устанавливается форма для принтера:
http://home.earthlink.net/~akonshin/files/PrintLib.pas
Кстати, я тут кому-то совсем недавно кидал уже этот файлик. Я сейчас в него заглянул и заметил, что там ошибки не отлавливаются. Так я поправил его чуть-чуть.
← →
spleen (2003-01-08 11:49) [4]дык использова-ЛА .. но там нет возможности настраивать размеры бумаги и самое главное отключать дуплекс в принтере! а вот апишные функции дают такую возможность!...а вообще-то и не сложно...а в чем трабла я нашла, если интересно могу написать...ошибка пустяковая и не связана с апишными функциями-))
← →
Alex Konshin (2003-01-08 18:57) [5]Ну так в моем примере показано как менять формы, а изменить размер бумаги и т.п. аналогично. Там же показано, как devmode достать, а с ним ты работать умеешь. Я не настаиваю - это твое дело, но в моем случае будут нормально работать остальные функции из Printers, а в твоем, боюсь, их использовать просто нельзя.
А в чем ошибка-то? Небось в том, что ты неверно DocumentProperties вызывала? Просто в приведенном коде этого вызова вообще нет.
Страницы: 1 вся ветка
Текущий архив: 2003.02.17;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.011 c