Shutdown Timer
Posted: 10 Jan 2019, 13:23
by Best-Code-in-Use
Hallo liebe Mitstreiter,
ich habe mir ein Shutdown Skript angepasst, allerdings möchte ich das der Timer nach Start des Skriptes sofort anläuft.
(Ohne den START Button drücken zu müssen)
Hintergrund ist der der das der Shutdown jederzeit über die GUI abgebrochen werden kann, aber wenn Niemand am PC sitzt halt durchgeführt wird nach der abgelaufenen Zeit.
Über eine Erleuchtung würde ich mich freuen.
ich habe mir ein Shutdown Skript angepasst, allerdings möchte ich das der Timer nach Start des Skriptes sofort anläuft.
(Ohne den START Button drücken zu müssen)
Hintergrund ist der der das der Shutdown jederzeit über die GUI abgebrochen werden kann, aber wenn Niemand am PC sitzt halt durchgeführt wird nach der abgelaufenen Zeit.
Über eine Erleuchtung würde ich mich freuen.
Shutdown Timer
Code: Select all
#Persistent
#SingleInstance, Force ; Bei Neustart des Scriptes die alte Instanz ohne Nachfrage ersetzen
#NoEnv ; Nicht nachsehen, ob leere Varibalen evtl. Umgebungsvariablen sind, beschleunigt die Laufzeit
#NoTrayIcon ; Das AHK Symbol wird nicht angezeigt
; Source= https://autohotkey.com/board/topic/83530-timer-for-shutdownreboothibernatesleep/
; Script by Cephei1
ListLines, Off
SetBatchLines,-1
ScriptName = Shutdown Timer
;------( Gui )----------------------------------------------------------------
; Um einen Wert Default zu setzen - nach Vorne und dahinter: "...||...", beispielsweise=
; Gui, Add, DropdownList, w400 vTimer_Action, Herunterfahren||Neustarten|Sleep|Hibernate|
Gui, Add, GroupBox, x10 y10 w420 h100, Zeit (in Minuten)
Gui, Font, S15 CBlack
Gui, Add, Edit, x20 y30 w400 h40 gTimer_Preview vTimer_Minutes, 60
Gui, Font, S9
Gui, Add, DropdownList, w400 vTimer_Action, Herunterfahren||Neustarten|Sleep|Hibernate|
Gui, Font, S15 W600
Gui, Add, Text, x15 w410 Center +BackGroundTrans, Die Aktion startet in
Gui, Font, S40, Lucida Console
Gui, Add, Text, x15 w410 Center +BackGroundTrans vTimer_Update, 0:60:00
Gui, Font, S12 W400
Gui, Add, Button, x20 w90 Center gTimer_Start, Start
Gui, Add, Button, x+10 yp w90 Center gTimer_Pause, Pause
Gui, Add, Button, x+10 yp w90 Center gTimer_Stop, Stop
Gui, Add, Button, x+10 yp w90 Center gTimer_Exit, Beenden
Gui, -SysMenu
Gui, Show, , % ScriptName
ShutdownGui=1
Return
;------( Convert input into HH:MM:SS for prevew
Timer_Preview:
Gui, Submit, Nohide
If !! Timer
{
SetTimer, Timer_Start, Off
MsgBox, ,% ScriptName, Shutdown Timer wurde gestoppt. Neustart des Timers mit Eingabe der neuen Zeit!
Timer=
}
Timer_Update:="", Timer_UpdateLast:="", TimeSet:="", Flash:="", PauseTime:=""
SetFormat, Float, 0.0
TimeSet:=A_TickCount, TimeSet:=FormatSeconds(((Timer_Minutes*60*1000) - (A_TickCount - TimeSet))/1000)
If TimeSet = :00:00
GuiControl, Text, Timer_Update, 0:00:00
Else
GuiControl, Text, Timer_Update, % TimeSet
Return
;------( Start
Timer_Start:
If Pause
{
GoSub, Timer_Pause
Return
}
If ! TimerRunning ; Whether the Timer is ON
{
Gui, Submit, Nohide
If (!Timer_Minutes || !Timer_Action)
{
SetTimer, Timer_Start, Off
MsgBox, ,% ScriptName, Minuten nicht eingetragen (mind. 1 Minute) oder keine Aktion gewaehlt.
}
Else
{
TimeSet:=A_TickCount
Timer_Minutes:=(Timer_Minutes * 60) * 1000
SetTimer, Timer_Start, 50
TimerRunning := 1
}
}
Else
{
SetFormat, Float, 0.0
Timer_Update:=FormatSeconds((Timer_Minutes - (A_TickCount - TimeSet))/1000)
If (Timer_Update="" || Timer_Update <> Timer_UpdateLast)
{
GuiControl, Text, Timer_Update, % Timer_Update
Timer_UpdateLast:=Timer_Update
}
If % (A_TickCount - TimeSet) > Timer_Minutes
{
SetTimer, Timer_Start, Off
If Timer_Action=Sleep
DllCall("PowrProf\SetSuspendState", "int", 0, "int", 1, "int", 1)
If Timer_Action=Hibernate
DllCall("PowrProf\SetSuspendState", "int", 1, "int", 1, "int", 1)
If Timer_Action=Neustarten ; If Timer_Action=Reboot
Shutdown, 6
If Timer_Action=Herunterfahren ; If Timer_Action=Shutdown
Shutdown, 5
}
; Flash Window
If (Timer_Minutes - (A_TickCount - TimeSet))/1000 < 60
{
If ! Flash
WinSet, Alwaysontop, On, % ScriptName
If (Flash="" || (A_TickCount-Flash) > 400)
{
Gui, Flash
Flash:=A_TickCount
}
}
}
Return
;------( Pause
Timer_Pause:
If % Pause:= (Pause = "") ? "1" : ""
{
SetTimer, Timer_Start, Off
PauseTime:=A_TickCount
}
Else
{
TimeSet:=TimeSet+(A_TickCount-PauseTime), PauseTime:=""
SetTimer, Timer_Start, 50
}
Return
;------( Stop
Timer_Stop:
Reload
Return
;------( Exit
Timer_Exit:
ExitApp
Return
;------( Functions )----------------------------------------------------------
FormatSeconds(NumberOfSeconds) {
Time = 19990101
Time += %NumberOfSeconds%, seconds
FormatTime, mmss, %time%, mm:ss
Return NumberOfSeconds//3600 ":" mmss
}