Entwickler-Ecke
Windows API - Probleme mit WaitForSingleObject UND FNotifyInfo!?
NeoXan - So 15.08.04 21:47
Titel: Probleme mit WaitForSingleObject UND FNotifyInfo!?
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| 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 hat schon die Notification ausgelöst wird, wenn ein neuer Job in den PrinterQueue kommt. Nun versuche ich schon ziemlich lange folgendes...
Ich möchte einfach dann wahlweise diesen Job (sprich den letzten oder 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???
Hoffe mich hat jemand verstanden... :wink:
mfg
NeoXan
Moderiert von
Motzi: Topic verschoben
BenBE - So 15.08.04 22:02
Du kannst dir doch einfach ein Extra Feld\Variable anlegen, in der du die Daten von deinem derzeitigen Druckjob abspeicherst. Und dieses Feld fragst du dann einfach in deiner DoNotify-Methode ab.
NeoXan - So 15.08.04 22:13
hmm...ich bin noch nicht soooo bewandert, dass ich das so wirklich verstehen könnte ;)...
Hab mich auch schon versucht mit der MSDN herumzuschlagen, die Daten sind so weit ich glaube in FNotifyInfo.Data oder so...aber weiter bin ich leider nicht gekommen... :/
[EDIT]
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...
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!