Script mit Countdown als Wartefenster

  • Hallo Leute,
    ich hab ein kleines Script das ca. 25 Sekunden dauert bis es Fertig ausgeführt ist.
    Damit die Leute nicht denken es passiert nichts würde ich gern während mein Script arbeitet ein Fenster anzeigen in dem ein Countdown läuft.

    Ich habe es mit hilfe des Forums hinbekommen mir einen Countdown zu basteln und mein Script funktioniert auch, allerdings weiß ich nicht wie ich die
    beiden Scripts kombinieren kann.

    Hab schon versucht das Countdown-Script als Funktion in mein Hauptscript einzubauen aber es wird immer nur eins ausgeführt.

    Countdown-Script:

    [autoit]


    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    Func Timer()
    $labeltext = "Sekunden bis das Programm startet."

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

    $Form1 = GUICreate("Warten", 480, 60, 300, 300)
    GUISetFont (20)
    $Label1 = GUICtrlCreateLabel("Label1" , 10, 10, 148, 33)
    $Label2 = GUICtrlCreateLabel($labeltext, 50, 10, 550, 33)
    GUISetState(@SW_SHOW)

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

    ;~ $StartSekunden=30*60+10
    $StartSekunden=25

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

    $Timer=TimerInit()

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

    While 1
    $Sekunden=$StartSekunden-Floor(TimerDiff($Timer)/1000)
    $Stunden=Floor($Sekunden/(60*60))
    $Sekunden-=$Stunden*60*60
    $Minuten=Floor($Sekunden/60)
    $Sekunden-=$Minuten*60
    GUICtrlSetData($Label1,$Sekunden)
    If $Sekunden=25 Then
    Exit
    EndIf
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    Sleep(10)
    WEnd

    [/autoit]

    HauptScript (nur ein Beispiel):

    [autoit]


    Run("Notepad.exe")
    Sleep(1000)
    Exit

    [/autoit]
  • Am einfachsten ist es wohl wenn du AdLibRegister benutzt um eine Funktion jede Sekunde auszuführen und diese Aktualisiert dann dein Label.

    Gruss Shadowigor

  • Hallo,
    ich hoffe ich habe Dich richtig verstanden?
    Schau Dir mal die Splash-Funktionen an. Die könnten was in Deiner Richtung sein.
    Hier noch eine andere Lösung:

    [autoit]


    #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
    _noTimer()

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

    Global $msg, $mainGUI = GUICreate("Haupt-GUI", 300, 300, 20, 20)
    GUISetState(@SW_SHOW, $mainGUI)

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

    Do
    $msg = GUIGetMsg()
    Until $msg = -3

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

    Func _noTimer()
    Local $gui = GUICreate("Willkommen", 400, 200)
    GUICtrlCreateLabel('Gleich geht es los ...', 10, 130, 380, 20)
    Local $progress = GUICtrlCreateProgress(10, 150, 380, 20)
    GUISetState(@SW_SHOW, $gui)

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

    For $i = 0 To 100 Step 5
    GUICtrlSetData($progress, $i)
    Sleep(500)
    Next
    GUIDelete($gui)
    EndFunc ;==>_noTimer
    ; Ende

    [/autoit]
  • Hi,
    vielleicht so?

    [autoit]


    #NoTrayIcon

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

    ;Variablen
    $h = @HOUR
    $m = @MIN
    $start = TimerInit()
    $Time = ("25") ; Zeit in Sekunden. Wird alles im Script umgerechnet

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

    ProgressOn("Programmstatus", "Gestartet um: " & $h & ":" & $m & " Uhr")

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

    While 1
    _calcTimeleft()
    _doOtherStuff()
    Sleep(10)
    WEnd

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

    ;Verbliebene Zeit
    Func _calcTimeleft() ;OK
    $check = Round(Round(TimerDiff($start), 0) / 1000, 0)
    $percent = ($check * 100 / $Time)
    ProgressSet($percent & "%", $percent & "%")
    If $check = ($Time) Then
    Sleep(300)
    ProgressOff()
    _done($check)
    EndIf
    EndFunc ;==>_calcTimeleft

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

    ;Dein Script
    Func _doOtherStuff() ;OK
    ;
    ;
    ;SCRIPT
    ;
    ;
    EndFunc ;==>_doOtherStuff

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

    ;Fertig
    Func _done($zeit) ;OK
    MsgBox(262144, "Done", "Zeit: " & $zeit)
    Exit
    EndFunc ;==>_done

    [/autoit]