Hallo liebe autoit-Freunde,
ich habe ein Problem mit meinem noch nicht ganz fertigen Shutdown-Skript.
Es soll zu einer bestimmten Uhrzeit (basierend auf der von Windows) also keine Differenz-Funktion, den PC herunterfahren. Dies funktioniert auch ganz gut.
Jedoch wäre ich gern in der Lage nach Betätigung des Skriptes durch "OK", es durch den Button "Abbrechen" zu unterbrechen und neu konfigurieren bzw. zu initiieren.
Aber das bekomme ich einfach nicht auf die Reihe. Auch der Kill des kompletten Skriptes per "Abbrechen" nach Aktivierung wäre ein Fortschritt, scheitere aber selbst daran.
Habe schon verschiedene Varianten und Schleifen probiert aber ohne Erfolg.
Die entsprechende Stelle ist im Quellcode markiert, testen könnt ihr mit der Option "Herunterfahren".
Vielen Dank im Voraus.
Ich hoffe mal, dass ich nicht auf GUI OnEvent switchen muss.
#include <GUIConstants.au3>
$Form1 = GUICreate("Shutdown!", 290, 325, 280, 283)
Global $Stunde = GUICtrlCreateInput("09", 72, 35, 40, 21, -1, $WS_EX_CLIENTEDGE) ;Stunde
Global $Minute = GUICtrlCreateInput("30", 200, 35, 40, 21, -1, $WS_EX_CLIENTEDGE) ;Minute
GUICtrlCreateGroup("Uhrzeit eingeben", 10, 10, 270, 65)
;GUICtrlSetFont(-1, 11, 400, 0, "MS Sans Serif")
GUICtrlCreateLabel("Stunde:", 25, 37, 40, 17)
GUICtrlCreateLabel("Minute:", 150, 37, 40, 17)
GUICtrlCreateGroup("Optionen", 10, 85, 270, 75)
Global $Radio1 = GUICtrlCreateRadio("Herunterfahren", 25, 105)
Global $Radio2 = GUICtrlCreateRadio("Neustart", 25, 125)
Global $Radio3 = GUICtrlCreateRadio("Abmelden", 140, 105)
Global $Radio4 = GUICtrlCreateRadio("Zwangs Shutdown", 140, 125)
GUICtrlCreateGroup("Status", 10, 170, 270, 70)
$status = GUICtrlCreateEdit(" --- Nicht gestartet ---", 25, 190, 245, 40, BitOR(0x0800, 0x0040, 0x2000))
$Ok = GUICtrlCreateButton("OK", 25, 255, 97, 25)
Global $Abbrechen1 = GUICtrlCreateButton("Abbrechen", 160, 255, 105, 25)
GUICtrlSetState($Radio1, $GUI_CHECKED)
GUISetState(@SW_SHOW, $Form1)
;Global $Std = GUICtrlRead($Stunde)
;Global $Min = GUICtrlRead($Minute)
;============== Abfrage der GUI-Buttons ==============
While 1
Global $msg = GuiGetMsg()
Select
Case $msg = $GUI_EVENT_CLOSE
ExitLoop
Case $msg = $Abbrechen1
Exit
Case $msg = $Ok
If GUICtrlRead($Radio1) = 1 Then
;MsgBox(1,"","Herunterfahren")
Local $Std = GUICtrlRead($Stunde)
Local $Min = GUICtrlRead($Minute)
_All_GUI_Controls($Status)
GUICtrlSetData($status, " --- Skript gestartet --- " & @CRLF & "Herunterfahren zur Ziel-Zeit: " & $Std & ":" & $Min)
While 2
If $Std = @HOUR And $Min = @MIN Then
ExitLoop
ElseIf $msg = $Abbrechen1 Then ;========> HIER LIEGT MEIN PROBLEM
ExitLoop
EndIf
WEnd
MsgBox(1,"Ok","Shutdown")
Exit
ElseIf GUICtrlRead($Radio2) = 1 Then
MsgBox(1,"","Neustart")
;Shutdown(2)
ElseIf GUICtrlRead($Radio3) = 1 Then
MsgBox(1,"","Abmelden")
;Shutdown(0)
ElseIf GUICtrlRead($Radio4) = 1 Then
MsgBox(1,"","Zwangs Shutdown")
;Shutdown(5)
EndIf
Case Else
;MsgBox(1,"Fehler","Es ist ein Fehler aufgetreten. :(")
EndSelect
WEnd
Exit
;============== Funktionen ==============
Func _All_GUI_Controls($Status)
;deaktiviert alle Controls nach Skriptaktivierung
GUICtrlSetState($Stunde,$GUI_DISABLE)
GUICtrlSetState($Minute,$GUI_DISABLE)
GUICtrlSetState($Radio1,$GUI_DISABLE)
GUICtrlSetState($Radio2,$GUI_DISABLE)
GUICtrlSetState($Radio3,$GUI_DISABLE)
GUICtrlSetState($Radio4,$GUI_DISABLE)
GUICtrlSetState($Ok,$GUI_DISABLE)
EndFunc
Alles anzeigen