sowie weitere Infos gibts hier
PB ab 4.30 (auch 64-Bit Version)
Windows only!
Code: Alles auswählen
EnableExplicit
Import "kernel32.lib"
CreateTimerQueue()
CreateTimerQueueTimer(*phNewTimer, TimerQueue.i, *Callback, *Parameter, DueTime.i, Period.i, Flags.l)
DeleteTimerQueue(TimerQueue.i)
EndImport
Global gDoneEvent.i
OpenConsole()
Procedure TimerRoutine(*lpParam.Integer, TimerOrWaitFired.i)
If *lpParam = 0
PrintN("TimerRoutine *lpParam is #NULL")
Else
PrintN("Timer routine called. Parameter is " + Str(*lpParam\i))
EndIf
SetEvent_(gDoneEvent)
EndProcedure
Procedure Main()
Protected hTimer.i
Protected hTimerQueue.i
Protected arg.i = 123
; Use an event object To track the TimerRoutine execution
gDoneEvent = CreateEvent_(#Null, #True, #False, #Null)
If Not gDoneEvent
PrintN("CreateEvent failed " + Str(GetLastError_()))
ProcedureReturn 1
EndIf
; Create the timer queue
hTimerQueue = CreateTimerQueue()
If Not hTimerQueue
PrintN("CreateTimerQueue failed " + Str(GetLastError_()))
ProcedureReturn 2
EndIf
; Set a timer To call the timer routine in 10 seconds
If Not CreateTimerQueueTimer(@hTimer, hTimerQueue, @TimerRoutine(), @arg, 10000, 0, 0)
PrintN("CreateTimerQueueTimer failed " + Str(GetLastError_()))
ProcedureReturn 3
EndIf
; TODO: Do other useful work here
PrintN("Call timer routine in 10 seconds...")
; Wait For the timer-queue thread To complete using an event
; object. The thread will signal the event at that time.
If WaitForSingleObject_(gDoneEvent, #INFINITE) <> #WAIT_OBJECT_0
PrintN("WaitForSingleObject failed " + Str(GetLastError_()))
EndIf
CloseHandle_(gDoneEvent)
; Delete all timers in the timer queue
If Not DeleteTimerQueue(hTimerQueue)
PrintN("DeleteTimerQueue failed " + Str(GetLastError_()))
EndIf
ProcedureReturn 0
EndProcedure
Debug Main()
PrintN("")
Print("press return to end ")
Input()
CloseConsole()
Microsoft statt dessen empfohlen.
Vielleicht kanns ja einer gebrauchen
