Einzelnen Beitrag anzeigen

swestner

Registriert seit: 31. Aug 2012
Ort: Hallstadt
78 Beiträge
 
Delphi 10.4 Sydney
 
#1

Druckerwareschlange überwachen / SprinterSpy von Peter Below

  Alt 23. Feb 2016, 11:46
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:
  _PRINTER_NOTIFY_INFO = record
    Version: DWORD;
    Flags: DWORD;
    Count: DWORD;
    aData: array[0..0] of TPrinterNotifyInfoData;
  end;
und der Schleife

Code:
For i:=0 To pni^.Count-1 Do
  Case pni^.aData[i].Field Of
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?

3. Seitennummer, usw. werden auch nicht korekt ausgelesen.

Hat mit der Komponente jemand Erfahrung und diese vielleicht erweitert / korrigiert?

Grüße

Stefan
Stefan Westner
  Mit Zitat antworten Zitat