AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Druckerstatus ermitteln und anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Druckerstatus ermitteln und anzeigen

Ein Thema von TUX_der_Pinguin · begonnen am 2. Nov 2012 · letzter Beitrag vom 5. Nov 2012
 
TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
609 Beiträge
 
Delphi 11 Alexandria
 
#1

Druckerstatus ermitteln und anzeigen

  Alt 2. Nov 2012, 10:54
Ich versuche mich gerade daran einen eigenen Drucker Dialog zu erstellen, quasi den Dialog der erscheint beim Aufruf von PrintDialog.Execute nach zu bilden.

Das ganze findet mit Delphi 2007 unter Windows XP statt. Bisher sieht alles gut aus nur habe ich noch so meine Probleme mit dem Status des Druckers.
Ich bekomme zwar einen Status abgefragt jedoch nur als Cardinal und da frage ich mich komme ich irgendwie an die entsprechenden Texte oder muss ich die selbst machen?!

Was mich auch stutzig macht ist das diese Drucker quasi 2 Status Informationen bereithält. "Wenig Toner" und "0 Dokumente warten" zu letzterem konnte ich kein Status Flag in der WinSpool.pas finden. (Siehe Anhang)

Ich würde mich wohl schon zufrieden geben wenn ich eine offizielle Liste finden würde mit der ich den Status in deutsch umwandeln könnte.

Delphi-Quellcode:
var
    ADevice: array[0..MAX_PATH-1] of Char;
    ADriver: array[0..MAX_PATH-1] of Char;
    APort: array[0..MAX_PATH-1] of Char;
    ADeviceMode: THandle;


procedure TfrmPartsListPrintDialog.cmbPrinterSelect(Sender: TObject);
var
  hPrinter: THandle;
  BytesNeeded: DWORD;
  pInfo: PPrinterInfo2;

begin
  //Drucker auswähl ändern
  Printer.PrinterIndex := cmbPrinter.ItemIndex;

  //Neuen Drucker auswählen
  Printer.GetPrinter(ADevice, ADriver, APort, ADeviceMode);

  if OpenPrinter(ADevice, hPrinter, nil) then begin
    try

      GetPrinter(hPrinter, 2, nil, 0, @BytesNeeded);

      pInfo := AllocMem(BytesNeeded);
      try
        GetPrinter(hPrinter, 2, pInfo, BytesNeeded, @BytesNeeded);

        //Hier käme sowas wie "StatusToString" hin ...
        lblType.Caption := pInfo^.pDriverName;
        lblLocation.Caption := pInfo^.pLocation;
        lblComment.Caption := pInfo^.pComment;

      finally
        FreeMem(pInfo);
      end;{try..finally}

    finally
      ClosePrinter(hPrinter);
    end;{try..finally}
  end;{if}

end;
Angehängte Grafiken
Dateityp: png Druckerdialog.png (22,9 KB, 71x aufgerufen)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:54 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz