Auto-Shutdown Programm

  • Hey, melde mich nun auch mal wieder ;)

    Habe mir heute morgen aus langeweile ein Script gebastelt, dass den PC zu einer bestimmten uhrzeit herunterfährt.
    Habe als Eingabefeld für die Uhrzeit eine Inputbox genommen und per ":" getrennt. Nun würde ich das ganze aber so einstellen, dass man die ":" nicht löschen kann, denn sonst funktioniert das ganze nicht mehr so wie es soll ;)

    Hier mal der Code:

  • So würde es funktionieren (mit GUIRegisterMsg und StringRegEx :P

    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    ;Start Base
    $Form1 = GUICreate("Shutdown-O-Mat by MaddeX", 284, 296, 316, 212)
    $bStart = GUICtrlCreateButton("Start", 184, 24, 75, 25, $WS_GROUP)
    $bEnd = GUICtrlCreateButton("Beenden", 184, 64, 75, 25, $WS_GROUP)
    $bInfo = GUICtrlCreateButton("Über", 184, 144, 75, 25, $WS_GROUP)
    $rShutdown = GUICtrlCreateRadio("Herunterfahren", 16, 192, 113, 17)
    GUICtrlSetState(-1,$GUI_Checked)
    $rRestart = GUICtrlCreateRadio("Neu Starten", 16, 224, 113, 17)
    $chForce = GUICtrlCreateCheckbox("Erzwingen?", 16, 256, 97, 17)
    $tActual = GUICtrlCreateInput("Aktuelle Zeit", 32, 48, 121, 21, $ES_Readonly)
    $tToAction = GUICtrlCreateInput("Zeit bis Aktion", 32, 88, 121, 21, $ES_Readonly)
    $tSet = GUICtrlCreateInput("23:59:59", 32, 128, 121, 21)
    $old="23:59:59"
    $Group1 = GUICtrlCreateGroup("Zeiteinstellungen", 16, 16, 153, 161)
    $chLock = GUICtrlCreateCheckbox("Lock", 40, 152, 105, 17, BitOR($BS_AUTOCHECKBOX,$BS_PUSHLIKE,$WS_TABSTOP))
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    ;End Base
    ;Start Über
    $Form2 = GUICreate("Über Shutdown-O-Mat by MaddeX", 347, 176, 192, 124)
    $Edit1 = GUICtrlCreateEdit("", 8, 8, 329, 129, BitOR($ES_CENTER,$ES_READONLY))
    GUICtrlSetData(-1, StringFormat("Das Programm organisiert das automatische Herunterfahren\r\noder Neu Staten ihres PC"&Chr(39)&"s. Das Programm ist nicht ausgereift,\r\nder Programmierer (MaddeX) behält sich das Recht vor jederzeit\r\nänderungen an der Software vorzunehmen. Der Ersteller des \r\nProgramms übernimmt keine Haftung bei eventuellen Schäden\r\ndie am PC entstehen.\r\n\r\nCopyright by MaddeX /2010/"))
    $bHide = GUICtrlCreateButton("Schliessen", 128, 144, 75, 25, $WS_GROUP)
    GUISetState(@SW_Hide)
    GUIRegisterMsg($WM_COMMAND,"_check")
    ;End Über
    AdlibRegister("time",1000)
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    aEnd()
    Case $bEnd
    aEnd()
    Case $bInfo
    GUISetState(@SW_SHOW,$Form2)
    Case $bHide
    GUISetState(@SW_HIDE,$Form2)
    Case $bStart
    AdlibRegister("Time2Action",1000)
    sleep(1000)
    GUICtrlSetData($bStart,"Re-Start")
    Case $chLock
    If GUICtrlRead($chLock) = 1 Then
    GUICtrlSetData($chLock,"Locked")
    GUICtrlSetState($tSet,$GUI_DISABLE)
    ElseIf GUICtrlRead($chLock) = 4 Then
    GUICtrlSetData($chLock,"Lock")
    GUICtrlSetState($tSet,$GUI_ENABLE)
    EndIf

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

    EndSwitch
    WEnd
    ;Funktion Beenden
    Func aEnd()
    $dEnd=MsgBox(4,"Beenden?","Sind sie Sicher?")
    if $dEnd=6 Then
    Exit
    EndIf
    EndFunc
    ;Funktion Beenden
    ;Funktion Zeit
    Func time()
    $time=@HOUR&":"&@MIN&":"&@SEC
    GUICtrlSetData($tActual, $time)
    $Old=GUICtrlRead($tSet)
    EndFunc
    ;Funktion Zeit
    ;Funktion Time2Action
    Func Time2Action()
    $tSetn=Guictrlread($tSet)
    $tSetsplit=StringSplit($tSetn,":")
    If $tSetsplit[1]="" Then
    $tSetsplit[1]="0"
    ElseIf $tSetsplit[2]="" Then
    $tSetsplit[2]="0"
    ElseIf $tSetsplit[3]="" Then
    $tSetsplit[3]="0"
    EndIf
    $tSetHour=$tSetsplit[1]-@HOUR
    If $tSetHour <0 Then
    $tSetHour=$tSetHour+23
    EndIf
    $tSetMIN=$tSetsplit[2]-@MIN
    If $tSetMIN <0 Then
    $tSetHour=$tSetHour-1
    $tSetMIN=$tSetMIN+59
    EndIf
    $tSetSec=$tSetsplit[3]-@SEC
    If $tSetSec <0 Then
    $tSetMIN=$tSetMIN-1
    $tSetSec=$tSetSec+59
    EndIf
    If $tSetHour <10 Then
    $tSetHour="0"&$tSetHour
    EndIf
    If $tSetMIN <10 Then
    $tSetMIN="0"&$tSetMIN
    EndIf
    If $tSetSEC <10 Then
    $tSetSEC="0"&$tSetSEC
    EndIf
    GUICtrlSetData($tToAction,$tSetHour&":"&$tSetMIN&":"&$tSetSec)
    if $tSetHour="00" And $tSetMIN="00" And $tSetSec="00" Then
    action()
    EndIf
    EndFunc
    ;Funktion Time2Action
    ;Funktion action
    Func action()
    AdlibUnRegister("Time2Action")
    GUICtrlSetData($tToAction, "Shutdown")
    if GUICtrlRead($rShutdown)=1 Then
    $shutdown=1
    Else
    $shutdown=2
    EndIf
    If GUICtrlRead($chForce)=1 Then
    $shutdown=$shutdown+16
    EndIf
    Shutdown($shutdown)
    EndFunc
    Func _check($hWnd, $Msg, $wParam, $lParam)
    If not $lParam = $tSet Then return $GUI_RUNDEFMSG
    GUICtrlSetData($tToAction,StringRegExp(GUICtrlRead($tSet),"^\d{0,2}:\d{0,2}:\d{0,2}$",0))
    If not StringRegExp(GUICtrlRead($tSet),"^\d{0,2}:\d{0,2}:\d{0,2}$",0) then
    GUICtrlSetData($tSet,$old)
    EndIf
    Return $GUI_RUNDEFMSG
    EndFunc

    [/autoit]

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.