Registriert seit: 17. Jan 2007
1.169 Beiträge
Turbo Delphi für Win32
|
Re: Druckerstatus
18. Apr 2007, 23:20
Moin,
der Info.Status ist bei mir auch immer gleich 0. Info.cJobs gibt die Anzahl der aktuellen Druckaufträge an, das funktioniert bei mir jedoch.
Folgender Code funktioniert zumindest bei mir unter Win98 mit meinem Drucker:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
Needed: DWORD;
Device, Driver, Port : array[0..200] of char;
hPrinter, hDeviceMode : THandle;
Buffer : Pointer;
hDevice: cardinal;
begin
Printer.PrinterIndex := -1;
Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
if WinSpool.OpenPrinter(@Device, hPrinter, nil) then
begin
GetPrinter(hPrinter, 2, nil, 0, @Needed);
GetMem(Buffer, Needed);
if GetPrinter(hPrinter, 2, Buffer, Needed, @Needed) then
if TPrinterInfo2A(Buffer^).pPortName <> nil then
begin
hDevice:= CreateFile(PChar('\\.\'+TPrinterInfo2A(Buffer^).pPortName), GENERIC_READ,
FILE_SHARE_READ, nil, OPEN_EXISTING, 0, 0);
if hDevice <> INVALID_HANDLE_VALUE then
begin
CloseHandle(hDevice);
Showmessage('Der Drucker ist online.');
end
else
Showmessage('Der Drucker ist offline.')
end;
FreeMem(Buffer, Needed);
WinSpool.ClosePrinter(hPrinter);
end;
end;
Ob das immer funktioniert ist natürlich eine andere Sache. Der Code musste ansonsten wohl noch etwas überarbeitet werden.
Gruß bitsetter
"Viele Wege führen nach Rom" Wolfgang Mocker (geb. 1954), dt. Satiriker und Aphoristiker
|
|
Zitat
|