Start Stop Exit für eine Schleife

  • Hi ho,

    ich hab malwieder ein Problem, wie schaff ich es, wenn ich den Start Button gedrückt hab, das er bei Stop wieder aus der Start Func springt? Danach soll er wieder auf den Start warten oder mit Exit beendet werden können.......

    Spoiler anzeigen
    [autoit]


    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    [/autoit] [autoit][/autoit] [autoit]

    GUICreate("Watchdog Check",500,500)
    GUICtrlCreateButton("Start",10,400,70,50)
    GUICtrlSetOnEvent(-1, '_Start')
    GUICtrlCreateButton("Stop",110,400,70,50)
    GUICtrlSetOnEvent(-1, "_Stop")
    GUICtrlCreateButton("Exit",210,400,70,50)
    GUICtrlSetOnEvent(-1, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    Func _Start()
    While 1
    MsgBox(0,"","TEST")
    Sleep(1000)
    Wend
    EndFunc

    [/autoit] [autoit][/autoit] [autoit]

    Func _Stop()

    [/autoit] [autoit][/autoit] [autoit]

    EndFunc

    Func _Exit()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    While 1
    Sleep(10)
    WEnd

    [/autoit]
    • Offizieller Beitrag

    Hallo!

    Ich habe mal etwas ähnliches gemacht. Da bin ich in etwa so vorgegangen:

    Spoiler anzeigen
    [autoit]


    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Global $Start

    [/autoit] [autoit][/autoit] [autoit]

    Opt("GUIOnEventMode", 1)

    GUICreate("Watchdog Check",500,500)
    GUICtrlCreateButton("Start",10,400,70,50)
    GUICtrlSetOnEvent(-1, '_Start')
    GUICtrlCreateButton("Stop",110,400,70,50)
    GUICtrlSetOnEvent(-1, "_Stop")
    GUICtrlCreateButton("Exit",210,400,70,50)
    GUICtrlSetOnEvent(-1, "_Exit")

    GUISetState(@SW_SHOW)

    Func _Start()
    $Start = 1
    EndFunc

    Func _Stop()
    $Start = 0
    EndFunc

    Func _Exit()
    Exit
    EndFunc


    While 1
    If $Start = 1 Then
    While $Start = 1
    MsgBox(0,"","TEST")
    Sleep(1000)
    WEnd
    EndIf
    Sleep(10)
    WEnd

    [/autoit]

    MfG. Oscar

  • Hm den Schritt hatte ich mir auch überlegt ;)

    Danke dir Oscar,
    wenn jemand noch andere Ideen hat, bin für alles offen.

    • Offizieller Beitrag

    Ein bischen minimieren geht immer ;) :

    Ich hab mal noch, statt der MsgBox 'ne zweite GUI mit veränderlicher Anzeige eingebaut. Das demonstriert es besser.

    Spoiler anzeigen
    [autoit]


    #include <GUIconstants.au3>
    #include <Array.au3>
    #include <File.au3>

    Global $Start = False

    Opt("GUIOnEventMode", 1)

    $gui1 = GUICreate("Watchdog Check",500,500)
    GUICtrlCreateButton("Start",10,400,70,50)
    GUICtrlSetOnEvent(-1, '_Start_Stop')
    GUICtrlCreateButton("Stop",110,400,70,50)
    GUICtrlSetOnEvent(-1, "_Start_Stop")
    GUICtrlCreateButton("Exit",210,400,70,50)
    GUICtrlSetOnEvent(-1, "_Exit")

    [/autoit] [autoit][/autoit] [autoit]

    $gui2 = GUICreate('Sekunden', 200, 50, 300, 300)
    $label = GUICtrlCreateLabel('', 20,20,160, 17, $SS_CENTER)

    GUISetState(@SW_SHOW, $gui1)

    Func _Start_Stop()
    $Start = Not $Start
    EndFunc

    Func _Exit()
    Exit
    EndFunc


    While 1
    If $Start Then
    $begin = TimerInit()
    GUISetState(@SW_SHOW, $gui2)
    While $Start
    If TimerDiff($begin) > 1000 Then
    GUICtrlSetData($label, @SEC)
    $begin = TimerInit()
    EndIf
    WEnd
    GUISetState(@SW_HIDE, $gui2)
    EndIf
    Sleep(10)
    WEnd

    [/autoit]