Te traduje un código que utilizo en
otro lenguaje, a ver si te sirve:
Código Delphi
[-]
unit SpoolUtils;
interface
uses
Windows;
function GetPrinterStatus(APrinterName: PChar): DWORD;
implementation
uses
Printers, WinSpool, SysUtils;
function GetPrinterStatus(APrinterName: PChar): DWORD;
var
HPrinter: THandle;
BytesNeeded: Cardinal;
PrinterDefaults: PRINTER_DEFAULTS;
PI2: ^PRINTER_INFO_2;
begin
with PrinterDefaults do
begin
DesiredAccess := PRINTER_ACCESS_USE;
pDatatype := nil;
pDevMode := nil;
end;
Win32Check(OpenPrinter(APrinterName, HPrinter, @PrinterDefaults));
try
if not GetPrinter(HPrinter, 2, nil, 0, @BytesNeeded) then
begin
GetMem(PI2, BytesNeeded);
try
if GetPrinter(HPrinter, 2, PI2, BytesNeeded, @BytesNeeded) then
Result := PI2^.Status
else
Result := MaxWord;
finally
FreeMem(PI2);
end;
end
else
Result := MaxWord;
finally
ClosePrinter(HPrinter);
end;
end;
end.
Saludos!