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