Script mittels button innerhalb einer Schleife beenden

  • Hi,
    ich bin relativ neu bei der Autoit-Programmierung...
    das ist eine Grundlegende Frage und ich hoffe ihr könnt mir weiterhelfen.
    Ich möchte mit einem button mein Script beenden, worin ein countdown in einer Schleife abläuft.
    Der Script sagt mehr als tausend Worte:

    Spoiler anzeigen

    Bedingung: Der button steht über allem!
    Egal was ich innerhalb der Schleife mache, es soll laufen, als wäre der button nicht da.
    Klicke ich auf den button schließt sich das Script.
    Also hier soll die countdownschleife immer weiterlaufen, bis ich den button drücke und sich das script schließt.

    Ich habe alles mit allem getauscht...
    Ich bekomme es nicht zu meinem gewünschten resultat.

    Danke für eure Hilfe im Vorraus

    Gruß Diplopoda

    Einmal editiert, zuletzt von Diplopoda (15. August 2010 um 14:42)

  • Hi!


    Versuchs so

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>
    Opt("GUIOnEventMode", 1)
    $splash = SplashTextOn ("Countdown: ", "", 300, 40, 460, 62,20, "", 10)
    GUISetOnEvent(-3, '_exit')
    $Form1 = GUICreate("form1", 270, 92, 531, 416)
    $Button1 = GUICtrlCreateButton("Beenden", 8, 32, 70, 25, 0)
    GUICtrlSetOnEvent(-1, '_exit')
    GUISetState()

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

    While 1 * Sleep(10)
    While 2
    _countdown(3)
    Wend
    Wend

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

    Func _exit()
    Exit
    EndFunc

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

    Func _countDown($Countdown)
    $seconds = _DateAdd('s', $Countdown, _NowCalc())
    Do
    Sleep(100)
    $sec = _DateDiff('s', _NowCalc(), $seconds)
    $string = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", _
    Mod($sec / 3600, 24), Mod(($sec / 60), 60), Mod($sec, 60))
    ControlSetText($splash, "", "Static1", $string)
    Until $sec = 0
    EndFunc

    [/autoit]


    Edit:/ wobei du While 2 nicht brauchst kannst du löschen
    LG Kleiner

    • Offizieller Beitrag

    Oder so:

    Spoiler anzeigen
    [autoit]


    #include <Date.au3>
    #include <GUIConstantsEx.au3>

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

    $splash = SplashTextOn("Countdown: ", "", 300, 40, 460, 62, 20, "", 10)

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

    $Form1 = GUICreate("form1", 270, 92, 531, 416)
    $Button1 = GUICtrlCreateButton("Beenden", 8, 32, 70, 25, 0)

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

    GUISetState()
    $Countdown = 10
    _Countdown()
    AdlibRegister('_Countdown', 1000)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE, $Button1
    AdlibUnRegister('_Countdown')
    Exit
    EndSwitch
    WEnd

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

    Func _Countdown()
    Local $seconds, $sec
    $Countdown -= 1
    If $Countdown = -1 Then
    AdlibUnRegister('_Countdown')
    ControlSetText($splash, "", "Static1", "abgelaufen")
    Return
    EndIf
    $seconds = _DateAdd('s', $Countdown, _NowCalc())
    $sec = _DateDiff('s', _NowCalc(), $seconds)
    $string = StringFormat("%.02d" & ":" & "%.02d" & ":" & "%.02d", _
    Mod($sec / 3600, 24), Mod(($sec / 60), 60), Mod($sec, 60))
    ControlSetText($splash, "", "Static1", $string)
    EndFunc

    [/autoit]