指定時間後にシャットダウン/スリープするAHKスクリプト

指定時間後にシャットダウン/スリープするAHKスクリプト

Win+Escでシャットダウン、Win+Shift+Escでスリープ。ホットキーで出現する入力ダイアログに分単位で数字を入力してOKすると、各タイマー実行。

入力数値が正の数でなかったりキャンセル、ダイアログを閉じるなどした場合は何もしない。ダイアログの表示時間は1分間。

指定時間経過後、スリープはそのままスリープに入るが、シャットダウンの場合は更に確認ダイアログが出現し、10秒間だけキャンセルの猶予ができる。

もっと細かい指定のできるタイマーソフトを使った方がいいかもしれないけど、これはこれで便利。

#Esc::
#+Esc::
	If A_ThisHotkey = #Esc
		InputBox, STime, Shutdown, 何分後にシャットダウンしますか?, , 300, 130, , , , 60
	Else If A_ThisHotkey = #+Esc
		InputBox, STime, Sleep, 何分後にスリープしますか?, , 300, 130, , , , 60
	STime := STime * 1000 * 60
	If (ErrorLevel = 0 && STime > 0)
	{
		Tick = % A_TickCount + STime
		If A_ThisHotkey = #Esc
			SetTimer, Shutdown, 1000
		Else If A_ThisHotkey = #+Esc
			SetTimer, Sleep, 1000
	}
Return
Shutdown:
	If A_TickCount > %Tick% 
	{
		SetTimer, Shutdown, OFF
		MsgBox, 4097, Shutdown, シャットダウンを開始します, 10
		IfMsgBox, Cancel
			Return
		Shutdown, 1
	}
Return
Sleep:
	If A_TickCount > %Tick% 
	{
		SetTimer, Sleep, OFF
		DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0)
	}
Return