Ich habe schon verschiedenes probiert, aber ich schaffe es nicht aus einer For Schleife auf Knopfdruck (GUI) rauszuspringen.
Mit einer Checkbox ist es ganz einfach, aber sieht halt komisch aus.
Das problem ist das in dieser For Schleife ein FTP Befehl steckt der wenn der zielrechner nicht verfügbar ist, es etwa 20 sekunden "stehen" bleibt.
Und ich so nicht auf den Knopf auf der GUI reagieren kann.
Um euch nicht mit meinem ganzen Code vollzuballern, habe ich es hier vereinfacht.
Hat jemand ne Idee wie ich den gedrückten Stop Knopf erkennen kann?
Ist es irgendwie möglich so zu machen das er gedrückt bleibt?? Und ich Ihn dann einfach wie die Checkbox nach dem Status abfragen kann.
Den timeout vom FTP kann ich vermutlich nicht umgehen, aber das es wenigstens möglich währe nach dem timeout die For Schlaube abzubrechen währe schon cool.
Spoiler anzeigen
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 171, 65, -1, -1)
$bStart = GUICtrlCreateButton("Start", 7, 8, 75, 25, 0)
$bStop = GUICtrlCreateButton("Stop", 87, 8, 75, 25, 0)
$xStop = GUICtrlCreateCheckbox("Stop", 96, 40, 49, 17)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
GUICtrlSetState($bStop,$GUI_DISABLE)
GUICtrlSetState($xStop,$GUI_DISABLE)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $bStart
GUICtrlSetState($bStart,$GUI_DISABLE)
GUICtrlSetState($bStop,$GUI_ENABLE)
GUICtrlSetState($xStop,$GUI_ENABLE)
For $1 = 100 To 110
RunWait('ftp -s:test.txt 192.168.0.' & $1,'',@SW_HIDE)
ConsoleWrite($1 & @CRLF) ;nur damit ich sehe wo es gerade steckt
If GUICtrlRead($xStop)=$GUI_CHECKED Then ExitLoop
Next
GUICtrlSetState($bStart,$GUI_ENABLE)
GUICtrlSetState($bStop,$GUI_DISABLE)
GUICtrlSetState($xStop,$GUI_UNCHECKED+$GUI_DISABLE)
EndSwitch
WEnd
Das ist der Inhalt der test.txt: