Thema: Delphi Druckerstatus

Einzelnen Beitrag anzeigen

Benutzerbild von bitsetter
bitsetter

Registriert seit: 17. Jan 2007
1.169 Beiträge
 
Turbo Delphi für Win32
 
#10

Re: Druckerstatus

  Alt 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
  Mit Zitat antworten Zitat