Pc in x min Herunterfahren (Sleeper)

  • Hallo zusammen.
    Ich habe hier ein kleines Scribt gepostet welches ich jede Nacht benutzte bevor ich mir ein Hörbuch anmache und einschlafe. Das Scribt fährt den Rechner nach einer bestimmten Zeit herunter. Mit der Tastenkombination "Alt" und "s" lässt sich das Scribt jederzeit beenden. Bitte um Feedback und verbesserungsvorschläge.autoit.de/wcf/attachment/7881/
    Danke


    Spoiler anzeigen
    [autoit]

    #cs ----------------------------------------------------------------------------

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

    AutoIt Version: 3.3.4.0
    Author: ScarfacePH

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

    Script Function:
    Template AutoIt script.

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

    #ce ----------------------------------------------------------------------------

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

    Opt ("TrayAutoPause",0)
    HotKeySet("!s", "_Exit")
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>

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

    $Form1 = GUICreate("PC Sleeper", 282, 210, 192, 124)
    $Checkbox1 = GUICtrlCreateCheckbox(" 10 min", 56, 28, 89, 25)
    $Checkbox2 = GUICtrlCreateCheckbox(" 20 min", 56, 56, 81, 25)
    $Checkbox3 = GUICtrlCreateCheckbox(" 30 min", 56, 80, 81, 33)
    $Checkbox4 = GUICtrlCreateCheckbox(" 45 min", 56, 112, 81, 25)
    $Checkbox5 = GUICtrlCreateCheckbox(" 60 min", 152, 28, 81, 25)
    $Checkbox6 = GUICtrlCreateCheckbox(" 90 min", 152, 56, 81, 25)
    $Checkbox7 = GUICtrlCreateCheckbox(" 120 min", 152, 80, 81, 33)
    $Checkbox8 = GUICtrlCreateCheckbox(" 150 min", 152, 112, 81, 25)
    $Beenden = GUICtrlCreateButton("Beenden", 16, 144, 105, 33, $WS_GROUP)
    $Starten = GUICtrlCreateButton("Sarten", 144, 144, 105, 33, $WS_GROUP)
    GUISetState(@SW_SHOW)

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

    While 1

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

    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit

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

    Case $Beenden
    Exit
    Case $Starten

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

    if GUICtrlRead ($Checkbox1) = $GUI_CHECKED then
    GUISetState(@SW_HIDE)
    $PcSleeper = GUICreate("Pc Sleeper", 600, 87, 15, 192)
    $Zeitangabe = GUICtrlCreateLabel("Der Pc fährt sich in 10 Minuten herunter!", 8, 24, 835, 52)
    GUICtrlSetFont(-1, 32, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    Sleep(4000)
    GUISetState(@SW_HIDE)

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

    TrayTip("","10 Minuten.", 5)

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

    $z = 10
    While $z >= 0
    TrayTip("",$z & " Minuten.", 5)
    $z = $z - 1
    Sleep(60000)
    WEnd

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

    Shutdown (12)
    EndIf

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

    if GUICtrlRead ($Checkbox2) = $GUI_CHECKED then
    GUISetState(@SW_HIDE)
    $PcSleeper = GUICreate("Pc Sleeper", 600, 87, 15, 192)
    $Zeitangabe = GUICtrlCreateLabel("Der Pc fährt sich in 20 Minuten herunter!", 8, 24, 835, 52)
    GUICtrlSetFont(-1, 32, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    Sleep(4000)
    GUISetState(@SW_HIDE)

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

    TrayTip("","20 Minuten.", 5)
    Sleep(600000)
    $z = 10
    While $z >= 0
    TrayTip("",$z & " Minuten.", 5)
    $z = $z - 1
    Sleep(60000)
    WEnd

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

    Shutdown (12)
    EndIf

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

    if GUICtrlRead ($Checkbox3) = $GUI_CHECKED then
    GUISetState(@SW_HIDE)
    $PcSleeper = GUICreate("Pc Sleeper", 600, 87, 15, 192)
    $Zeitangabe = GUICtrlCreateLabel("Der Pc fährt sich in 30 Minuten herunter!", 8, 24, 835, 52)
    GUICtrlSetFont(-1, 32, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    Sleep(4000)
    GUISetState(@SW_HIDE)

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

    TrayTip("","30 Minuten.", 5)
    Sleep(1200000)
    $z = 10
    While $z >= 0
    TrayTip("",$z & " Minuten.", 5)
    $z = $z - 1
    Sleep(60000)
    WEnd

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

    Sleep(1800000)
    Shutdown (12)
    EndIf

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

    if GUICtrlRead ($Checkbox4) = $GUI_CHECKED then
    GUISetState(@SW_HIDE)
    $PcSleeper = GUICreate("Pc Sleeper", 600, 87, 15, 192)
    $Zeitangabe = GUICtrlCreateLabel("Der Pc fährt sich in 45 Minuten herunter!", 8, 24, 835, 52)
    GUICtrlSetFont(-1, 32, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    Sleep(4000)
    GUISetState(@SW_HIDE)

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

    TrayTip("","45 Minuten.", 5)
    Sleep(2100000)
    $z = 10
    While $z >= 0
    TrayTip("",$z & " Minuten.", 5)
    $z = $z - 1
    Sleep(60000)
    WEnd

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

    Shutdown (12)
    EndIf

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

    if GUICtrlRead ($Checkbox5) = $GUI_CHECKED then
    GUISetState(@SW_HIDE)
    $PcSleeper = GUICreate("Pc Sleeper", 600, 87, 15, 192)
    $Zeitangabe = GUICtrlCreateLabel("Der Pc fährt sich in 60 Minuten herunter!", 8, 24, 835, 52)
    GUICtrlSetFont(-1, 32, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    Sleep(4000)
    GUISetState(@SW_HIDE)

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

    TrayTip("","60 Minuten.", 5)
    Sleep(3000000)
    $z = 10
    While $z >= 0
    TrayTip("",$z & " Minuten.", 5)
    $z = $z - 1
    Sleep(60000)
    WEnd

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

    Shutdown (12)
    EndIf

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

    if GUICtrlRead ($Checkbox6) = $GUI_CHECKED then
    GUISetState(@SW_HIDE)
    $PcSleeper = GUICreate("Pc Sleeper", 600, 87, 15, 192)
    $Zeitangabe = GUICtrlCreateLabel("Der Pc fährt sich in 90 Minuten herunter!", 8, 24, 835, 52)
    GUICtrlSetFont(-1, 32, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    Sleep(4000)
    GUISetState(@SW_HIDE)

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

    TrayTip("","90 Minuten.", 5)
    Sleep(4800000)
    $z = 10
    While $z >= 0
    TrayTip("",$z & " Minuten.", 5)
    $z = $z - 1
    Sleep(60000)
    WEnd

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

    Shutdown (12)
    EndIf

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

    if GUICtrlRead ($Checkbox7) = $GUI_CHECKED then
    GUISetState(@SW_HIDE)
    $PcSleeper = GUICreate("Pc Sleeper", 600, 87, 15, 192)
    $Zeitangabe = GUICtrlCreateLabel("Der Pc fährt sich in 120 Minuten herunter!", 8, 24, 835, 52)
    GUICtrlSetFont(-1, 32, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    Sleep(4000)
    GUISetState(@SW_HIDE)

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

    TrayTip("","120 Minuten.", 5)
    Sleep(6600000)
    $z = 10
    While $z >= 0
    TrayTip("",$z & " Minuten.", 5)
    $z = $z - 1
    Sleep(60000)
    WEnd

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

    Shutdown (12)
    EndIf

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

    if GUICtrlRead ($Checkbox8) = $GUI_CHECKED then
    GUISetState(@SW_HIDE)
    $PcSleeper = GUICreate("Pc Sleeper", 600, 87, 15, 192)
    $Zeitangabe = GUICtrlCreateLabel("Der Pc fährt sich in 150 Minuten herunter!", 8, 24, 835, 52)
    GUICtrlSetFont(-1, 32, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    Sleep(4000)
    GUISetState(@SW_HIDE)

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

    TrayTip("","150 Minuten.", 5)
    Sleep(8400000)
    $z = 10
    While $z >= 0
    TrayTip("",$z & " Minuten.", 5)
    $z = $z - 1
    Sleep(60000)
    WEnd

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

    Shutdown (12)
    EndIf

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

    EndSwitch
    WEnd

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

    Func _Exit()
    Exit
    EndFunc

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • könntest noch die autoit3 icon rechts unten anders einstellen

    Opt ("TrayAutoPause",0)

    so ist bei rechtsklick auf das icon nicht gleich pause und das script läuft weiter!

    und das man vielleicht noch manuell die zeit eingeben kann per guictrlcreateinputbox und auslesen mit guictrlread

    lg chris

  • Das mit der Pause kannte ich noch gar nicht cool dankeschön werde das aufjedenfall noch ändern. Kann ich den Befehl denn einfach am Ende des Scribts reinkopieren oder muss der in einem bestimmten bereich stehen?
    Das mit der manuellen Eingabe habe ich bewusst nicht gemacht da ich in meinem Bett zwar die Maus habe aber nicht die Tastatur außerdem denke ich das die Auswahlfenster genügend Optionen bieten. Trotzdem guter Gedanke. Danke für das Feedback

  • np
    die opt. muss ganz oben hat man mir mal früher so erklärt also anfang script

    --Edit--

    du kannst auch das icon rechts unten ausblenden oder das menü abschalten oder beides kann dir das auch geben

    Opt ("TrayIconHide", 0) ;Iconausblenden
    Opt ("TrayMenuMode",1) ;Menüabschalten

    mehr optionen geh einfach mal in der hilfe nach Opt suchen

  • ok np ich suche gerade noch mein herunterfahren script ist zwar älter von damals wo ich angefangen habe aber kannst dann mal schauen hatte dort input
    sag dir ncoh bescheid wann ich es gefunden habe

  • das wär jetzt das script von mir ist die version 0.0.0.1 und habe irgendwo noch die v0.0.0.3
    die frägt abbevor er neustartet
    bringt ne meldung wann 1 min verbleibend ist das man speichern soll und alles beenden außer man hat das häckchen nicht drin gleich herunterfahren

    ich geb sie dir wann ich sie finde

    bin mir jetzt aber nicht sicher ob die version schon 100% funktioniert


    ---EDIT--- Programm Funkt ned bearbeitetes prog kommt sofort
    ---EDIT--- Programm müsste jetzt gehen

    ---EDIT--- v.0.0.0.1 gelöscht hatt fehler!

    4 Mal editiert, zuletzt von SchrotterCh (25. Februar 2010 um 09:23)

  • und das man vielleicht noch manuell die zeit eingeben kann per guictrlcreateinputbox und auslesen mit guictrlread

    Also nicht böse nehmen, aber er ist ein Anfänger (gerade 14 BEiträge) als ich auf dem Level war, hätte ich mich noch nicht an ne Gui rangewagt^^

  • Ist nett gemeint Jonathan. Aber Guis sind gar nicht so schwer und mit dem ein und auslesen ist auch kein Ding wie gesagt. Ich bin noch ein Anfänger ja aber gerade falls ich etwas neues lernen kann was ich noch nicht kannte ist doch supi. Trotzdem danke für das Lob
    MfG

  • Also nicht böse nehmen, aber er ist ein Anfänger (gerade 14 BEiträge) als ich auf dem Level war, hätte ich mich noch nicht an ne Gui rangewagt^^

    ohja ^^ das kannte ich wusste nicht mal wie genau proggen das eine gui angezeigt wurde hatte immer nur fehler und es ging mir so gewaltig aufn sack xD

  • beim prog stimmt noch was mim teimer nicht hab noch ein fehler drin und die neuen versionen hab ich nicht mehr

  • so verbesserung hab es abgeändert
    updates:
    - Neustart oder Herunterfahren
    - Zeit funktioniert jetzt richtig
    - Anderes Tray Icon
    - Tooltip mit zeit verbleibend wird angezeigt (links unten)
    - befor heruntergefahren oder neugestartet wird kann man auswählen das man noch mals nachgefragt wird ob man immer noch will

    Spoiler anzeigen


    Herunterfahren (v.0.0.0.3):

    [autoit]


    #include <Timers.au3>
    #include <WindowsConstants.au3>

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

    ;-------------------------------------------------------------------------------------------------------------

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

    Opt("CaretCoordMode", 1)
    Opt("ExpandEnvStrings", 0)
    Opt("ExpandVarStrings", 0)
    Opt("GUICloseOnESC", 1)
    Opt("GUICoordMode", 1)
    Opt("GUIDataSeparatorChar", "|")
    Opt("GUIOnEventMode", 0)
    Opt("GUIResizeMode", 0)
    Opt("GUIEventOptions", 0)
    Opt("MouseClickDelay", 10)
    Opt("MouseClickDownDelay", 10)
    Opt("MouseClickDragDelay", 250)
    Opt("MouseCoordMode", 1)
    Opt("MustDeclareVars", 0)
    Opt("PixelCoordMode", 1)
    Opt("SendAttachMode", 0)
    Opt("SendCapslockMode", 1)
    Opt("SendKeyDelay", 5)
    Opt("SendKeyDownDelay", 1)
    Opt("TCPTimeout", 100)
    Opt("TrayAutoPause", 0)
    Opt("TrayIconDebug", 1)
    Opt("TrayIconHide", 0)
    Opt("TrayMenuMode", 1)
    Opt("TrayOnEventMode", 0)
    Opt("WinDetectHiddenText", 0)
    Opt("WinSearchChildren", 1)
    Opt("WinTextMatchMode", 1)
    Opt("WinTitleMatchMode", 1)
    Opt("WinWaitDelay", 250)

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

    ;-------------------------------------------------------------------------------------------------------------

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

    TraySetIcon ("Herunterfahren.ico")

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

    $GUI_01 = GUICreate("Herunterfahren", 415, 125, -1, -1, 0x80000000)
    GUICtrlCreateLabel("Tage", 60, 8, 50, 20)
    GUICtrlCreateLabel("Stunden", 160, 8, 50, 20)
    GUICtrlCreateLabel("Minuten", 260, 8, 50, 20)
    GUICtrlCreateLabel("Secunden", 360, 8, 50, 20)
    $GUI_01_Input_01 = GUICtrlCreateInput("", 5, 5, 50, 20)
    $GUI_01_Input_02 = GUICtrlCreateInput("", 105, 5, 50, 20)
    $GUI_01_Input_03 = GUICtrlCreateInput("", 205, 5, 50, 20)
    $GUI_01_Input_04 = GUICtrlCreateInput("", 305, 5, 50, 20)
    $GUI_01_Button_01 = GUICtrlCreateButton("Start", 5, 75, 405, 20)
    $GUI_01_Button_02 = GUICtrlCreateButton("Exit", 5, 100, 405, 20)
    $GUI_01_Checkbox_01 = GUICtrlCreateCheckbox ("Am Ende erneut Nachfragen", 5, 30, 405, 20)
    $GUI_01_Checkbox_02 = GUICtrlCreateCheckbox ("Computer Neustarten", 5, 50, 405, 20)
    GUISetBkColor (0xCCCCCC, $GUI_01)
    GUISetState(@SW_SHOW, $GUI_01)

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

    ;-------------------------------------------------------------------------------------------------------------

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

    While True
    Switch GUIGetMsg()
    Case $GUI_01_Button_01
    MsgBox(64, "Hinweis", "PC wird nach ablauf der Zeit Heruntergefahren | Neugestartet!")
    $GUI_01_Read_01 = GUICtrlRead($GUI_01_Input_01)
    $GUI_01_Read_02 = GUICtrlRead($GUI_01_Input_02)
    $GUI_01_Read_03 = GUICtrlRead($GUI_01_Input_03)
    $GUI_01_Read_04 = GUICtrlRead($GUI_01_Input_04)
    $Stunden_01 = ($GUI_01_Read_01) * 24
    $Minuten_01 = ($Stunden_01 + $GUI_01_Read_02) * 60
    $Secunden_01 = ($Minuten_01 + $GUI_01_Read_03) * 60
    $Millisecunden_02 = ($Secunden_01 + $GUI_01_Read_04) * 1000
    ExitLoop

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

    Case $GUI_01_Button_02
    _Exit ()
    EndSwitch
    WEnd

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

    $GUI_01_Read_05 = GUICtrlRead ($GUI_01_Checkbox_01)
    $GUI_01_Read_06 = GUICtrlRead ($GUI_01_Checkbox_02)

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

    While True
    If $GUI_01_Read_05 = 1 And $GUI_01_Read_06 = 1 Then
    _Herunterfahren_MN ()
    ExitLoop
    Else
    EndIf

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

    If $GUI_01_Read_05 = 1 And $GUI_01_Read_06 = 4 Then
    _Herunterfahren_MH ()
    ExitLoop
    Else
    EndIf

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

    If $GUI_01_Read_05 = 4 And $GUI_01_Read_06 = 1 Then
    _Herunterfahren_ON ()
    ExitLoop
    Else
    EndIf

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

    If $GUI_01_Read_05 = 4 And $GUI_01_Read_06 = 4 Then
    _Herunterfahren_OH ()
    ExitLoop
    Else
    _Exit_F ()
    EndIf
    WEnd

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

    ;-------------------------------------------------------------------------------------------------------------

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

    Func _Herunterfahren_OH ()

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

    GUISetState (@SW_HIDE, $GUI_01)
    $Anzahl_01 = $Millisecunden_02 / 1000
    For $a = 1 To $Anzahl_01 Step 1
    ToolTip ("Verbleibende Zeit: " & $Anzahl_01 - $a & " Secunden.", 0, @DesktopHeight - 15, "", 4)
    Sleep (1000)
    Next
    Shutdown (1)
    EndFunc

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

    Func _Herunterfahren_MH ()
    GUISetState (@SW_HIDE, $GUI_01)
    $Anzahl_01 = $Millisecunden_02 / 1000
    For $a = 1 To $Anzahl_01 Step 1
    ToolTip ("Verbleibende Zeit: " & $Anzahl_01 - $a & " Secunden.", 0, @DesktopHeight - 15, "", 4)
    Sleep (1000)
    Next
    $MsgBox_Herunterfahren = MsgBox (4 + 32 + 262144, "Herunterfahren", "Soll der Computer wirklich Heruntergefahren werden?")
    If $MsgBox_Herunterfahren = 7 Then
    MsgBox (64, "Herunterfahren", "Herunterfahren gestoppt!")
    Exit
    Else
    Shutdown (1)
    EndIf
    EndFunc

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

    Func _Herunterfahren_ON ()
    GUISetState (@SW_HIDE, $GUI_01)
    $Anzahl_01 = $Millisecunden_02 / 1000
    For $a = 1 To $Anzahl_01 Step 1
    ToolTip ("Verbleibende Zeit: " & $Anzahl_01 - $a & " Secunden.", 0, @DesktopHeight - 15, "", 4)
    Sleep (1000)
    Next
    Shutdown (2)
    EndFunc

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

    Func _Herunterfahren_MN ()
    GUISetState (@SW_HIDE, $GUI_01)
    $Anzahl_01 = $Millisecunden_02 / 1000
    For $a = 1 To $Anzahl_01 Step 1
    ToolTip ("Verbleibende Zeit: " & $Anzahl_01 - $a & " Secunden.", 0, @DesktopHeight - 15, "", 4)
    Sleep (1000)
    Next
    $MsgBox_Herunterfahren = MsgBox (4 + 32 + 262144, "Neustart", "Soll der Computer wirklich Neugestartet werden?")
    If $MsgBox_Herunterfahren = 7 Then
    MsgBox (64, "Neustart", "Neustart gestoppt!")
    Exit
    Else
    Shutdown (2)
    EndIf
    EndFunc

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

    Func _Exit_F ()
    MsgBox (16, "Fehler", "Es ergab ein Fehler" & @CRLF & "Programm wird geschlossen!")
    Exit
    EndFunc

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

    Func _Exit ()
    Exit
    EndFunc

    [/autoit]
  • wenn du es so machst das man die Zeit eingeben kann, könntest du die zuletzt verwendete Zeit in einer *.ini speichern..
    nur so als vorschlag..

    ja möglich ist es aber normal also sagen wirs so ich brauch nie die gleiche zeit nochmals ich starte das prog wann ich dusche das er updes macht und ich schätz die zeit ca und wann ich wieder da bin hat er neu gestartet müsste zwar sowieso nur ~10 sec warten mit herunterfahren und hochstarten aber naja ^^