指定時間でアラート/シャットダウンするAHKスクリプト
指定時間でアラート/シャットダウンするAHKスクリプト
以前作ったタイマーは無駄にごちゃごちゃしていたし、経過時間の指定だけで時刻指定ができなかったので、作り直した。
実行時期の指定は、分単位での経過時間と時刻。実行動作は、警告ダイアログによるアラート、シャットダウン、ハイバネート、スリープの4つ。入力に応じて実行時期の指定方法のチェックが移るようにした。
デフォルトの動作は面倒の少ないアラートだけど、他の動作がよければ"Checked"を適当に書き換えて使えばいい。
前のと違ってタイマーが動作中かどうかを表示する機能がないので、うっかりスクリプトの再起動とかしてたら、タイマーが止まったことに気付かなくなるけど、まぁその辺は諦める。
それと、このタイマーは1秒単位でしか判定してないから、最大1秒弱の誤差が生じる。
#Esc:: Gui, Kt:New, +LabelKt, キッチンタイマー Gui, Kt:Add, Edit, vKtSpan gKtSpan w50 Number, Gui, Kt:Add, DateTime, vKtTime gKtTime x+5 w150 1, yyyy/MM/dd HH:mm:ss Gui, Kt:Add, GroupBox, xs Section w205, 時間指定方法 Gui, Kt:Add, Radio, vKtTypeA xs+10 ys+15 Checked, 指定分後に実行 Gui, Kt:Add, Radio, vKtTypeB, 指定時刻に実行 Gui, Kt:Add, GroupBox, xs Section w205, 動作 Gui, Kt:Add, Radio, vKtAction Checked xs+10 ys+15 Section, アラート Gui, Kt:Add, Radio, , ハイバネート Gui, Kt:Add, Radio, ys, シャットダウン Gui, Kt:Add, Radio, , スリープ Gui, Kt:Add, Button, gKtOK xs-10 y+15 w100 Default, OK Gui, Kt:Add, Button, gKtCancel w100 x+5, Cancel Gui, Kt:Show Return KtSpan: GuiControl, Kt:, KtTypeA, 1 Return KtTime: GuiControl, Kt:, KtTypeB, 1 Return KtOK: Gui, Kt:Submit If (KtTypeA = 1 && KtSpan) SetTimer, KtExec, % KtSpan * 60 * -1000 Else If (KtTypeB = 1 && KtTime) { EnvSub, KtTime, %A_Now%, Seconds If (KtTime < 10) Msgbox, 指定時刻が早すぎます。`n10秒以上先を指定してください。 Else SetTimer, KtExec, % KtTime * -1000 } KtCancel: KtClose: KtEscape: Gui, KT:Destroy Return KtExec: If (KtAction = 1) MsgBox, 8240, アラート, 指定された時刻となりました。 Else { MsgBox, 4097, Shutdown, タイマーを実行します, 10 IfMsgBox, Cancel Return If (KtAction = 2) DllCall("PowrProf\SetSuspendState", "int", 1, "int", 0, "int", 0) Else If (KtAction = 3) Shutdown, 1 Else If (KtAction = 4) DllCall("PowrProf\SetSuspendState", "int", 0, "int", 0, "int", 0) } Return