Delphi-Quellcode:
FFinder := FindFirstPrinterChangeNotification(FPrinter, FFlags, 0,
nil);
if FFinder = INVALID_HANDLE_VALUE
then
raise Exception.Create(\'
Cannot create notification object\');
try
while not Terminated
do
if WaitForSingleObject(FFinder, 50) = WAIT_OBJECT_0
then
begin
if FindNextPrinterChangeNotification(FFinder, FFlags,
nil, Pointer(FNotifyInfo))
then
begin
Synchronize(DoNotify);
FreePrinterNotifyInfo(FNotifyInfo);
end;
end;
finally
FindClosePrinterChangeNotification(FFinder);
end;
Das Prob ist, dass schon die Notification ausgelöst wird, wenn ein neuer Job in den PrinterQueue kommt, ohne jedoch wirklich verarbeitet zu sein. Nun versuche ich schon ziemlich lange folgendes...
Ich möchte einfach dann wahlweise diesen Job (sprich den letzten oder auch der der dieses Event ausgelöst hat) zu pausieren bzw. gestatten weiterzulaufen. Gibt es da eine bessere Möglichkeit oder muss ich wenn dieses NotifyEvent ausgelöst wird noch mal eine Prozedur mit EnumJobs etc. etc. machen. Nur wie bekomme ich dann heraus, welchen Job ich schon überprüft habe und welche nicht, bzw. die Überprüfung findet statt und der Job ist aber nicht nicht wirklich in der Warteschlange???
Das eigentlich Prob ist ja, dass diese Notification ja ausgelöst ist, sobald der Job ankommt...abe noch nicht in der Warteschlange ist! D.h. jeder Versuch diesen Job dann zu löschen etc. scheitert...
Wenn ich z.B. aber ein ShowMessage nach EnumJobs einbaue und dann erst auf OK klicke, wenn der Job in der Warteschlange ist, dann klappt es?! Gibt es da nicht eine einfachere Möglichkeit...
Hoffe mich hat jemand verstanden...
mfg
NeoXan