Timer in GUI

08/20/2014 08:08 Moneypulation#1
Hallo,

ich würde gerne einen Timer in meine GUI implementieren. Der Timer soll starten, sobald man auf den Start Button gedrückt hat. Das hab ich einfach mit TimerInit gemacht aber ich würde gerne, dass sich der Timer im Sekundentakt oder wenigstens im Minutentakt aktualisiert. Dann müsste ich ja aber in allen Funktionen TimerDiff() schreiben und selbst dann würde es wegen meinen eingebauten Sleeps sehr merkwürdig aktualisieren.

Aber ich kann ja auch nicht sowas wie das hier machen

While 1
GuiCtrlSetData($Log, TimerDiff($TimerLog)
WEnd

Dann würde ja nichts anderes mehr laufen. Also wie kann ich das am besten machen?

lg money
08/20/2014 08:49 nofuture#2
Heyho,

mit folgendem Code sollte es so möglich sein, wie du es gern hättest :)
Im Bezug auf Timer und GUIs kann ich dir nur empfehlen mal in meinen kürzlich erstellten Thread
[Only registered and activated users can see links. Click Here To Register...]
reinzuschauen, dort gibt es evtl auch noch das ein- oder andere nützliche für dich in Bezug auf GUIs, Sleep und Timer.

Code:
#include <Timers.au3>

_Timer_SetTimer($form, 1000, "_UpdateTimer")

Func _UpdateTimer($hWnd, $Msg, $iIDTimer, $dwTime)
   If $timerLog Then
      #forceref $hwnd, $Msg, $iIDTimer, $dvTime
      _GUICtrlSetData($log, TimerDiff($timerLog)
   EndIf
EndFunc

While 1
   $nMsg = GUIGetMsg()
   Switch $nMsg
      Case $btnStart
         $timerLog = TimerInit()
   EndSwitch
WEnd
08/20/2014 09:40 Moneypulation#3
Danke habs für mein Bot umgeschrieben und es funktioniert, nur hab ich ein Problem. Bei mir startet der Time mit ungefähr 8600 Sekunden statt mit 0. Woran liegt denn das?

Edit: Hatte zwei Timer miteinander verwechselt. Funktioniert :D Danke!
08/20/2014 11:50 Devsome#4
Ich würde dir AdlibRegister empfehlen, dort kannst du auch einen Timerwert hinzufügen, dass alle x Sekunden die Funktion aufgerufen wird.

[Only registered and activated users can see links. Click Here To Register...]

z.B. so

Code:
AdlibRegister("Start_", 1000)
HotKeySet("{ESC}", "Exit_")

$startZeit = 0;

Func Exit_()
	AdlibUnRegister("Start_")
	Exit 0
EndFunc

Func Start_()
	ConsoleWrite("Deine Zeit" & $startZeit & @CRLF)
	$startZeit += 1;
EndFunc

While 1
	Sleep(250)
WEnd
08/20/2014 14:09 Moneypulation#5
Quote:
Originally Posted by Devsome View Post
Ich würde dir AdlibRegister empfehlen, dort kannst du auch einen Timerwert hinzufügen, dass alle x Sekunden die Funktion aufgerufen wird.

[Only registered and activated users can see links. Click Here To Register...]

z.B. so

Code:
AdlibRegister("Start_", 1000)
HotKeySet("{ESC}", "Exit_")

$startZeit = 0;

Func Exit_()
	AdlibUnRegister("Start_")
	Exit 0
EndFunc

Func Start_()
	ConsoleWrite("Deine Zeit" & $startZeit & @CRLF)
	$startZeit += 1;
EndFunc

While 1
	Sleep(250)
WEnd
Danke, aber die Timers UDF geht auch :P