Ractur hat geschrieben:Oder gibt es die Möglichkeit die Schleifen "miteinander" zu "verbinden" keine Ahnung.
Ich weiß nicht was Deine Funktion IdleTime() macht, aber hier mal ein
Beispiel wie man die 2 Schleifen zusammensetzen könnte.
In dem Beispiel benutze ich mal "idle" für den Zustand das keine
Fensterereignisse stattfinden, nur zur Demonstration. In Wirklichkeit
ist das ja nicht idle. "User idle" wäre wohl eher wenn keine Mausbewegungen
und -klicks sowie keine Tastatureingaben stattfinden.
Mit folgenden Pseudocode könntest Du ausrechnen wie lange die
Zeit zwischen den Ereignissen war. Dazwischen kannst Du aber
durch WaitWindowEvent() nichts machen.
Code: Alles auswählen
Repeat
Datum1 = Date()
EventID = WaitWindowEvent()
Datum2 = Date()
; ausrechnen wieviel Zeit kein Event stattfand
ForEver
Die zweite Methode ist dann mit WindowEvent() ohne das Wait:
Code: Alles auswählen
Repeat
EventID = WindowEvent()
If Not EventID ; kein Event stattgefunden
; erhöhe internen idle-timer, z.b. auch mit Date() sekunden berechnen
; machwas mit dem wert
Delay(20) ; kleine verzögerung, die nur aufgerufen wird wenn *kein*
; Ereigniss stattfand, sonst natürlich keine Verzögerung
Else
; Ereignis stattgefunden, idle-timer auf 0 zurücksetzen
Select EventID
Case #PB_Event_CloseWindow
break ; ForEver-Schleife beenden
EndSelect
EndIf
ForEver
Wie gesagt, das ist nur zur Demonstration wie man das zusammenlegen
könnte. Um herauszufinden wie lange der User nichts macht, mußt Du dann
halt die globale Mausposition und Tastatureingaben überprüfen.