![]() |
WaitForSingleObject UND FNotifyInfo, Jobs etc.
Delphi-Quellcode:
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...
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; 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 |
Re: WaitForSingleObject UND FNotifyInfo, Jobs etc.
Ich vermute mal, daß du bestimmte Printjobs verhindern willst. Sozusagen eine Print-Accounting-Software.
Mit Notifications wirst du da meinen Erfahrungen nach nicht weiterkommen. Und falls es tatsächlich geht, kommst du um EnumJobs nicht rum. Übrigens ist diese Methode nicht auf 9x verfügbar, wo man das ganze über Polling machen würde. Ein Beispiel existiert im PSDK. |
Re: WaitForSingleObject UND FNotifyInfo, Jobs etc.
hmm....ok, wäre auch zu schön um wahr zu sein ;) :mrgreen:
Wie könnte man das Prob dann lösen, etwa einen vollkommen virtuellen Printer kreieren? mfg NeoXan BTW: Also ich habe es doch geschafft...auf Win NT läuft es bis jetzt ohne Fehler durch...was aber heißt das nicht 20 Leute gleichzeitig einen Job senden, da könnte es glaube ich sein, dass die Application abstürtzt ;). Wenn das Notify Object ausgelöst wird, werden halt alle Jobs mit Enum gehohlt und dann wird der letzte Überprüft und gegebenfals wieder gelöscht...Aber wie gesagt einen wirklichen Belastungstest gab es noch nicht... |
Re: WaitForSingleObject UND FNotifyInfo, Jobs etc.
Das ist garnicht so einfach, hatte es vor 4 Jahren mal versucht, dann aber nie wieder mangels Zeit.
Shareware-Produkt gibts hier. Müßte man höchstens schauen wie das funzt :-D ![]() Gruß, Oliver PS: Die Jobs kämen nicht parallel an, selbst auf einem MP-System nicht. |
Re: WaitForSingleObject UND FNotifyInfo, Jobs etc.
Zitat:
|
Re: WaitForSingleObject UND FNotifyInfo, Jobs etc.
... daß sie immer seriell ankommen, nie komplett parallel. Dein Code würde also nicht zerbrechen.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:52 Uhr. |
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