Druckerwareschlange überwachen / SprinterSpy von Peter Below
Hallo,
ich stehe vor dem problem, die Druckerwarteschlange zu überwachen. Peter Below hat da ja was vor 13 Jahren entwickelt: http://cc.embarcadero.com/Item/20307 Ich habe mir das mal angesehen (unter Delphi 2007) und grundsätzlich funktioniert das ja, bis auf: 1. Als Dokumentname wird mir immer "Lokale Druckerdatendatei" ausgegeben und nicht z. B. "Microsoft Word - Dokument1" wie es im Spooler steht 2. Wenn der Code mit Range Checks compiliert wird, gibt es Range Check-Fehler. Das liegt wohl an dem komischen Konstrukt:
Code:
und der Schleife
_PRINTER_NOTIFY_INFO = record
Version: DWORD; Flags: DWORD; Count: DWORD; aData: array[0..0] of TPrinterNotifyInfoData; end;
Code:
Das TPrinterNotifyInfoData wiederholt sich Count-1-mal ist aber nur mit [0..0] deklariert. Range Check abschalten und dann Count-mal das auslesen wäre also in Ordnung, ist aber nicht Delphi-like. Wie könnte das anders gemacht werden?
For i:=0 To pni^.Count-1 Do
Case pni^.aData[i].Field Of 3. Seitennummer, usw. werden auch nicht korekt ausgelesen. Hat mit der Komponente jemand Erfahrung und diese vielleicht erweitert / korrigiert? Grüße Stefan |
AW: Druckerwareschlange überwachen / SprinterSpy von Peter Below
Zu 2.: Also wegen der Bereichsüberprüfung mach dir mal keine Sorgen. Die kannst du bekanntlich lokal ausschalten. Das "komische Konstrukt" ist übrigens völlig normal und wird in verschiedenen Teilen der Win32-API so verwendet.
Ich kann mir leider dieses alte Projekt nicht einmal herunterladen, da Embarcadero dafür ein Konto verlangt. Das habe ich meiner Erinnerung schon lange nicht mehr. Zu 1.: Die Beschreibung erwähnt aber FindFirstPrinterChangeNotification und du interessierst dich vermutlich ausschließlich für Benachrichtigungen des Typs PRINTER_CHANGE_JOB. Damit kann man arbeiten. Welche ID (einer JOB_NOTIFY_FIELD_*-Werte) hat denn der ausgelesene Eintrag? Handelt es sich da um JOB_NOTIFY_FIELD_DOCUMENT oder was genau liest der Code von Peter Below aus? Siehe PRINTER_NOTIFY_INFO_DATA structure. Zu 3.: siehe meine Frage zu 1. Welchen Typs ist der Eintrag welcher ausgelesen wird um die Seitennummer zu ermitteln? |
AW: Druckerwareschlange überwachen / SprinterSpy von Peter Below
Danke für die Antwort. Inzwischen hat das aber keine Relevanz mehr weil wir festgestellt haben, daß sich nur lokale Drucker mit dem Tool überwachen lassen und keine Netzwerkdrucker. Damit ist es für uns unbrauchbar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz