Getprinter - отримання імені порту принтера

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

Схожі статті