Normalerweise wird der Timer in die Hauptschleife integriert.
Dort wird dann eine bool-variable geprüft (true/false). In der Funktion zum Starten wird dann diese Variable auf true gesetzt und ab dann wird der Timer abgearbeitet.
Beispielscript:
AutoIt
#include <Date.au3>
global $clicks=0,$clickerActive=false,$neededClicksToStop=5,$clickTimer
global $width=150,$height=100
$hGui=GUICreate("Fenster",$width,$height)
$LabelClicks=GUICtrlCreateLabel("Click Counter: 0",5,5,$width-10)
$ButtonClick=GUICtrlCreateButton("Start",5,35,$width-10)
$LabelTimer=GUICtrlCreateLabel("00:00:00",5,70,$width-10)
GUISetState()
while 1
$msg=GUIGetMsg()
Switch $msg
Case $ButtonClick
if NOT $clickerActive then
;Starten des Timers
GUICtrlSetData($ButtonClick,"Click")
GUICtrlSetData($LabelClicks,"Click Counter: 0")
$clickerActive=true
$clickTimer=TimerInit()
else
;Erhöhen der Klicks
$clicks+=1
GUICtrlSetData($LabelClicks,"Click Counter: "&$clicks)
;Ende des Timers
if $clicks>=$neededClicksToStop then
$clicks=0
$clickerActive=false
GUICtrlSetData($ButtonClick,"Nochmal")
endif
endif
Case -3
exit
EndSwitch
if $clickerActive then
local $iHours,$iMins,$iSecs
_TicksToTime(TimerDiff($clickTimer),$iHours,$iMins,$iSecs)
$time=($iHours<10?"0"&$iHours:$iHours)&":"&($iMins<10?"0"&$iMins:$iMins)&":"&($iSecs<10?"0"&$iSecs:$iSecs)
if $time<>GUICtrlRead($LabelTimer) then
GUICtrlSetData($LabelTimer,$time)
endif
EndIf
WEnd
Alles anzeigen
Theoretisch kannst du in einer Funktion auch GuiGetMsg aufrufen, du müsstest aber alle Buttons, die während des Timers noch funtionieren sollen, nocheinmal mit Funktionen listen...
wobei man das auch wieder in eine Funktion auslagern kann^^