Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Druckerstatus ermitteln und anzeigen (https://www.delphipraxis.net/171365-druckerstatus-ermitteln-und-anzeigen.html)

TUX_der_Pinguin 2. Nov 2012 10:54

Druckerstatus ermitteln und anzeigen
 
Liste der Anhänge anzeigen (Anzahl: 1)
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;

Union 2. Nov 2012 11:41

AW: Druckerstatus ermitteln und anzeigen
 
Die "offizielle Liste" findest Du hier unter Status.

TUX_der_Pinguin 2. Nov 2012 12:08

AW: Druckerstatus ermitteln und anzeigen
 
Danke aber in Englisch nützt mir die Liste nicht viel. Ich hatte gehofft es gäbe bereits eine vollständige Liste mit den deutschen Texten.

Union 2. Nov 2012 12:12

AW: Druckerstatus ermitteln und anzeigen
 
Ja die gibt es. Aber da ist die Übersetzung einfacher, da alle Englisch-Deutschen strings von Windows enthalten sind (ca. 40 MB).

TUX_der_Pinguin 2. Nov 2012 12:15

AW: Druckerstatus ermitteln und anzeigen
 
Sorry aber ich verstehe nicht was du meinst.

Wo gibt es den diese Liste?

Union 2. Nov 2012 12:19

AW: Druckerstatus ermitteln und anzeigen
 
Auf der Seite findest Du alle Informationen die Du benötigst.

TUX_der_Pinguin 2. Nov 2012 12:38

AW: Druckerstatus ermitteln und anzeigen
 
Da man scheinbar einen Account mit entsprechendem Abonnement benötigt, was ich nicht habe, nützt mir das immer noch nichts.

Medium 2. Nov 2012 14:09

AW: Druckerstatus ermitteln und anzeigen
 
In der Zeit in der du genau die passenden Strings im Netz gesucht hast, hast du die paar da doch 20 Mal übersetzt. Und wenn es an der Sprache hapert: Die Dinger sind simpel genug, um mit Google sehr gute Ergebnisse zu erzielen. Und da du die Zielsprache ja kennst (;)) kannst du die Ergebnisse sogar noch auf Plausibilität prüfen und ggf. richten.

TUX_der_Pinguin 2. Nov 2012 15:00

AW: Druckerstatus ermitteln und anzeigen
 
Das ist mir schon klar Medium, wie gesagt ich hatte nur gehofft irgendwie durch API Befehl an die Texte
zu kommen. Und da ich gerne die gleichen Texte anzeigen würde wie sie z.b. in der Druckerwarteschlange von Windows bzw. dem TPrintDialog vorkommen, wäre es zu schön gewesen zu sein zumindest eine offizielle Liste zu bekommen.

Es ist ja sowieso schon komisch warum in der Windows Druckerwarteschlange steht "Niedriger Tonerstand" und bei TPrintDialog steht "Wenig Toner; 0 Dokumente warten". Wobei ich glaube das dieses "0 Dokumente warten" noch irgendein Drucker spezifischer Status ist der von wo auch immer her kommt.

sx2008 2. Nov 2012 16:26

AW: Druckerstatus ermitteln und anzeigen
 
Zitat:

Zitat von TUX_der_Pinguin (Beitrag 1189523)
Wobei ich glaube das dieses "0 Dokumente warten" noch irgendein Drucker spezifischer Status ist der von wo auch immer her kommt.

Die Zahl der Dokumente ist einfach die Anzahl der Dokumente (= Druckjobs) im Spooler die auf ihre Abfertigung warten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Seite 1 von 2  1 2      

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