- Offizieller Beitrag
Ich dachte mir, wir könnten ja mal ein paar kleine Scripte speziell für die AutoIt-Anfänger schreiben. Diese sollten möglichst gut kommentiert sein, um es den Anfängern leichter zu machen.
Hier also ein Countdown-Timer:
Spoiler anzeigen
#include <GUIConstantsEx.au3>
Global $iCounterStart = 60 ; hier den Startwert in Sekunden angeben
$iCounterStart *= 10 ; zum anzeigen der Zehntelsekunden mit 10 multiplizieren
Global $iCounter = $iCounterStart ; der Countervariable den Startwert zuweisen
Global $bStartStop = False ; boolesche Variable für Start/Stop Abfrage
Global $hGui = GUICreate('Countdown-Timer', 600, 100) ; Fenster erstellen (Größe = 600x100 Pixel)
Global $hProgressbar = GUICtrlCreateProgress(10, 10, 580, 20) ; Progressbar erstellen
GUICtrlSetData(-1, 100) ; den Wert für die Progressbar auf 100% setzen
Global $hDisplay = GUICtrlCreateLabel(StringFormat('%.1f', $iCounter / 10) & ' sek.', 20, 40, 60, 20) ; die Sekundenanzeige erstellen
Global $hReset = GUICtrlCreateButton('Reset', 10, 70, 70, 20) ; "Reset"-Button erstellen
Global $hStart = GUICtrlCreateButton('Start', 90, 70, 70, 20) ; "Start"-Button erstellen
GUISetState() ; das Fenster anzeigen
While True ; Endlosschleife starten
Switch GUIGetMsg() ; abfragen, ob eine Benutzereingabe erfolgte
Case $hReset ; wenn der Reset-Button angeklickt wurde
AdlibDisable() ; die zeitgesteuerte Funktion beenden
$iCounter = $iCounterStart ; den Counter wieder auf den Startwert setzen
$bStartStop = False ; die Start/Stop-Variable zurücksetzen
GUICtrlSetData($hDisplay, StringFormat('%.1f', $iCounter / 10) & ' sek.') ; die Sekundenanzeige stellen
GUICtrlSetData($hProgressbar, 100) ; Progressbar wieder auf 100%
GUICtrlSetData($hStart, 'Start') ; den Start-Button wieder mit dem Text "Start" belegen
GUICtrlSetState($hStart, $GUI_ENABLE) ; den Start-Button wieder freigeben
Case $hStart ; wenn der Start-Button angeklickt wurde
$bStartStop = Not $bStartStop ; Start/Stop-Variable invertieren (aus False wird True und umgekehrt)
Switch $bStartStop ; wenn der Wert der Start/Stop-Variablen...
Case True ; =True, dann...
GUICtrlSetData($hStart, 'Pause') ; den Start-Button mit dem Text "Pause" belegen
AdlibEnable('_Countdown', 100) ; die Funktion "_Countdown" alle 100ms aufrufen
Case False ; =False, dann...
GUICtrlSetData($hStart, 'Weiter') ; den Start-Button mit dem Text "Weiter" belegen
AdlibDisable() ; die zeitgesteuerte Funktion beenden
EndSwitch
Case $GUI_EVENT_CLOSE ; wenn der Schließen-Button angeklickt oder [ESC] gedrückt wurde
Exit ; Programm verlassen
EndSwitch
If $iCounter <= 0 Then ; wenn der Counter Null erreicht hat, dann...
AdlibDisable() ; die zeitgesteuerte Funktion beenden
$iCounter = 1 ; den Counter auf 1 setzen, damit diese If...Then-Anweisung nur einmal ausgeführt wird
GUICtrlSetState($hStart, $GUI_DISABLE) ; den Start-Button sperren (reagiert nicht mehr auf Mausklicks)
MsgBox(0, 'Countdown-Timer', 'Zeit um!') ; Eine Meldung ausgeben
EndIf
WEnd
Func _Countdown()
$iCounter -= 1 ; den Counterwert um 1 verringern
GUICtrlSetData($hProgressbar, Int(100 / $iCounterStart * $iCounter)) ; den neuen Wert in der Progressbar anzeigen
GUICtrlSetData($hDisplay, StringFormat('%.1f', $iCounter / 10) & ' sek.') ; und als Sekundenwert darstellen
EndFunc ;==>_Countdown