Printer lekérdezése

Printer állapotának lekérdezése (1)

Winspool, Printers;

function TForm1.GetPrinterJobs(PrinterName: string): Cardinal;
var
pi: ^PRINTER_INFO_2;
cbNeeded: DWORD;
begin
FillChar(pi, sizeof(pi), 0);
OpenPrinter(PChar(PrinterName), FPrinter, nil);
GetPrinter(FPrinter, 2, pi, 0, @cbNeeded);
GetMem(pi, cbNeeded);
GetPrinter(FPrinter, 2, pi, cbNeeded, @cbNeeded);
Result := pi^.cJobs;
FreeMem(pi, SizeOf(PRINTER_INFO_2));
ClosePrinter(FPrinter);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
i: Integer;
jobs: Cardinal;
begin
jobs := GetPrinterJobs(Printer.Printers[0]);
Label1.Caption := Printer.Printers[i] + #13#10 + IntToStr(Jobs) + ' jobs';
end;