Einzelnen Beitrag anzeigen

NeoXan
(Gast)

n/a Beiträge
 
#1

WaitForSingleObject UND FNotifyInfo, Jobs etc.

  Alt 17. Aug 2004, 14:07
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
  Mit Zitat antworten Zitat