heyho,
beim Umbauen meines Scriptes wollte ich diesem gleich ein nettes GUI verpassen - allerdings komme ich in Bezug auf die Buttons irgendwie nicht weiter.
Normaler GUI-Aufbau:
Der Code sollte an sich selbsterklärend sein,
GUIOnEventMode ist hierbei nicht aktiviert.
Das Problem ist: der Button $btnStop wird erst ausgeführt, sobald die Schleife beendet ist - was bei einem Bot ja eigentlich möglichst nie passieren sollte, da dies eine Benutzerinteraktion erfordert.
Versuche ich nun "zwischendurch den Button-Status" abzufragen (siehe Case $btnStart), gelingt dies ebenfalls nicht: Hier wird 0, -8 und im Anschluss nur noch -11 ausgegeben - unabhängig davon, ob ich irgendeinen Button anklicke.
Zum Schluss habe ich es mit GUIOnEventMode versucht (der Sinn dieser Option erschließt sich mir absolut nicht)
Auch hier reagieren die Buttons erst, sobald die Schleife beendet ist (anhand dieses Beispiels nach ca. 10sec, innerhalb einer Endlosschleife nie).
Kann mir jemand sagen, wie man unter diesen Umständen einen Funktionierenden Stop / Pause-Button in den Code einbringen kann?
Selbst ohne schleife würde dies kaum sinnvoll funktionieren, da ein Durchgang bei meinem aktuellen Projekt ca. 30sec - 10min dauern kann - und wenn man da zwischendrin auf Pause klickt, dann soll das Script auch pausieren und nicht erst 10 Minuten später.
Die einzige sinnvolle Alternative, die ich momentan sehe sind hotkeys, allerdings möchte ich die Steuerung eigentlich schon über das GUI managen können,
demnach hoffe ich, dass ihr bessere Ideen habt :)
beim Umbauen meines Scriptes wollte ich diesem gleich ein nettes GUI verpassen - allerdings komme ich in Bezug auf die Buttons irgendwie nicht weiter.
Normaler GUI-Aufbau:
Code:
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $btnStart
While 1
$nMsg = GUIGetMsg()
ConsoleWrite($nMsg & @CRLF)
Sleep(2000)
WEnd
Case $btnStop
Exit
EndSwitch
WEnd
GUIOnEventMode ist hierbei nicht aktiviert.
Das Problem ist: der Button $btnStop wird erst ausgeführt, sobald die Schleife beendet ist - was bei einem Bot ja eigentlich möglichst nie passieren sollte, da dies eine Benutzerinteraktion erfordert.
Versuche ich nun "zwischendurch den Button-Status" abzufragen (siehe Case $btnStart), gelingt dies ebenfalls nicht: Hier wird 0, -8 und im Anschluss nur noch -11 ausgegeben - unabhängig davon, ob ich irgendeinen Button anklicke.
Zum Schluss habe ich es mit GUIOnEventMode versucht (der Sinn dieser Option erschließt sich mir absolut nicht)
Code:
Opt("GUIOnEventMode", 1)
$btnStart = GUICtrlCreateButton("Start", 16, 158, 417, 33)
GUICtrlSetOnEvent($btnStart, "_Start")
$btnStop = GUICtrlCreateButton("Stop", 16, 208, 417, 33)
GUICtrlSetOnEvent($btnStop, "_Exit")
GUISetState(@SW_SHOW)
While 1
Sleep(100)
WEnd
Func _Start()
For $i = 1 To 5
; do something ...
Sleep(2000)
Next
EndFunc
Func _Exit()
Exit
EndFunc
Kann mir jemand sagen, wie man unter diesen Umständen einen Funktionierenden Stop / Pause-Button in den Code einbringen kann?
Selbst ohne schleife würde dies kaum sinnvoll funktionieren, da ein Durchgang bei meinem aktuellen Projekt ca. 30sec - 10min dauern kann - und wenn man da zwischendrin auf Pause klickt, dann soll das Script auch pausieren und nicht erst 10 Minuten später.
Die einzige sinnvolle Alternative, die ich momentan sehe sind hotkeys, allerdings möchte ich die Steuerung eigentlich schon über das GUI managen können,
demnach hoffe ich, dass ihr bessere Ideen habt :)