1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
procedure InfosImprimante(I: Integer; memo: TMemo);
var
hPrinter: NativeUInt;
Device: array[0..255] of char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
hDeviceMode: NativeUInt;
bytesNeeded: DWORD;
pPI: PPrinterInfo6;
retval: BOOL;
begin
Printer.PrinterIndex := I;
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if not winspool.OpenPrinterW(Device, hPrinter, nil) then
RaiseLastWin32Error;
try
retval := winspool.GetPrinterW(hPrinter, 6, nil, 0, @bytesNeeded);
If not retval Then
ShowMessage(SysErrormessage(GetLastError));
GetMem(pPI, bytesNeeded);
try
retval := winspool.GetPrinterW(hPrinter, 6, pPI, bytesNeeded, @bytesNeeded);
If not retval Then
RaiseLastWin32Error;
memo.Lines.Add( Printer.Printers[I] + ' = ' + IntToStr(pPI^.dwStatus));
finally
FreeMem(pPI);
end;
finally
winspool.ClosePrinter(hPrinter);
end;
end; |
Partager