GetPrinter - отримання імені порту принтера
Допоможіть скористатися GetPrinter. У мене працює виклик цієї функції, і значення повертається правильне, але при цьому генерує Access violation.
Роблю так:
procedure TForm1.Button1Click (Sender: TObject);
var pf: PRINTER_INFO_5;
h: Thandle;
( "EPSON EPL-5900L Advanced", h, 0) Допоможіть скористатися GetPrinter. У мене працює виклик цієї функції, і значення повертається правильне, але при цьому генерує Access violation.
Роблю так:
procedure TForm1.Button1Click (Sender: TObject);
var pf: PRINTER_INFO_5;
h: Thandle;
x, d: dword;
begin
d: = 0;
if OpenPrinter ( "EPSON EPL-5900L Advanced", h, 0) then begin
if not GetPrinter (h, 5,0,0, @ d) then begin x: = d;
if not GetPrinter (h, 5, @ pf, x, @ d) then showmessage ( "itsnogood") else
showmessage (pf.pPortName);
end;
при виході з процедури генерує помилку
Буду вдячний за допомогу.
І ще - прохання TPrinter.GetPrinter не пропонувати - там не повертається ім'я порту - сам перевіряв (на D5).
У мене видає:
EPSON Stylus COLOR 680 on LPT1.
І ніяких помилок
P.S. А що таке PRINTER_INFO_5? Попередив би хоч про лівих компонентах.
to Marser - а ти поясни що имеено у тебе видає рядок:
EPSON Stylus COLOR 680 on LPT1:
Що? tp.printers [i] чи що?
І ще - припустимо ви маєте рацію. Так мені що - вицеплять рядок з ім'ям порту принтера окремо? Чи не безглуздо це? Тобто видирати з "Printer Lalala Lpt: 11111" і мені значить треба ім'я порту з рядка видирати?
akonshin / files / PrintLib.pas
Це моє додавання для юніта Printers. Хак, але до сих пір працює на ура.
Подивися уважніше, там все, що тобі потрібно їсти.
А видирати і не треба, дивись мій код.
to Marser - або у мене щось в системі або в Дельфах не те, чи ти помилився. Прямо твій код використовую і отримую ТІЛЬКИ імена принтерів, а портів і в помині немає.
to Alex Konshin - мені саме ім'я порту через отриманий хендл принтера. Хендл отримувати я і сам можу.
to Marser - і ще - у мене 5-я Дельфах.
Я ж кажу, подивися уважніше
PortName: = THackPrinterDevice (oPrinter.Printers.Objects [idx]). FPort;
Пам'ять: 0.74 MB
Час: 0.035 c