- Код: Выделить всё
TForm1 = class(TForm)
btnStart: TButton;
cbPrinters: TComboBox;
procedure btnStartClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;
var
Form1: TForm1;
PrintersInfo: array[0..1023] of PRINTER_INFO_5;
hPrinter: PHandle;
procedure TForm1.FormCreate(Sender: TObject);
var
I, Needed, Returned: DWORD;
begin
if EnumPrinters(PRINTER_ENUM_LOCAL or PRINTER_ENUM_CONNECTIONS, nil, 5, @PrintersInfo, SizeOf(PrintersInfo), @Needed, @Returned) then
if Returned > 0 then begin
for I := 0 to Returned - 1 do
cbPrinters.Items.Add(PrintersInfo[I].pPrinterName);
btnStart.Enabled := True;
cbPrinters.ItemIndex := 1;
end;
end;
procedure TForm1.btnStartClick(Sender: TObject);
begin
if OpenPrinter(PChar(PrintersInfo[cbPrinters.ItemIndex].pPrinterName), hPrinter, nil) then
// всякий код
else
RaiseLastWin32Error;
end;
OpenPrinter всегда возвращает false, пробовал всякие варианты, не помогло.
RaiseLastWin32Error возвращает:
System error, (OS Code 87): Параметр задан неверно.
Подскажите в чем ошибка.