「ご飯が炊けるまでの時間でパソコン作業したい」 そんなこと、ありますよね (紳士風)。
Windows10には「アラーム & クロック」という標準アプリが搭載されていますが、起動して新しいタイマーを追加して時間設定…と少々面倒です。
今回はショートカットキー + 分指定のみという簡単操作で起動でき、しかも作業の邪魔にならない超シンプルなタイマーを、AutoHotkeyを使って作りたいと思います。
タイマーの準備
まずはタイマーのための準備をしましょう。今現在常駐しているメインのファイルを「main.ahk」とします。
タイマーのコードはそれとは別のファイルに記述していきます。新しく「simpleTimer.ahk」などの名前でファイルを作り、同じディレクトリに置きましょう。
AutoHotkeyのフォルダ
├── main.ahk
└── simpleTimer.ahk
このようなファイル構成でOK。「main.ahk」側にタイマー起動用のショートカットキーを登録しておきます。
!F13::Run, simpleTimer.ahk
Include文は不要です。これでAlt+F13を押すと、simpleTimer.ahkが起動するようになりました。なおキー設定やファイル名はお好みで設定してください。
タイマーのコードと使い方
今回のタイマーの中身はこんな感じです。simpleTimer.ahkに記述します。
InputBox, Min, 簡易タイマー, 時間を設定してください, , , , , , , , 5
Timer := Min * 60000
If(ErrorLevel == 0){
MsgBox, , タイマー開始, %Min%分カウントします..., 2
Sleep, %Timer%
ToolTip, %Min%分経過しました
Sleep, 5000
ToolTip
ExitApp
}else{
ExitApp
}
処理としては指定時間スリープするだけの単純なコード。保存、リロード後に設定したキーを押すと、
時間(分)を指定するダイアログが現れます。数値を入力して「OK」を押しましょう。試しに1分のタイマーを開始します。入力ボックスに「1」と入力してOKを押すと、
開始メッセージが現れます。そのまま放置か「OK」を押すと消えるので、1分待ちましょう。
指定した時間が経過すると、ツールチップで教えてくれます。ツールチップは5秒で自動消去されます。
タイマーの材料
今回のタイマーの材料となっているのがInputBox
とToolTip
、MsgBox
です。ToolTipとMsgBoxについては以前に取り上げているので、この部分をカスタマイズしたい方はこちら。
2行目では入力された値をミリ秒に変換して、変数に値を代入しています。変数の代入と呼び出しについてはこちらを参照してください。
今回新しく使用したのが1行目のInputBoxです。これについては以下で解説していきます。
InputBoxの仕様
InputBox, OutputVar [, Title
, Prompt
, HIDE
, Width
, Height
, X
, Y
, Locale
, Timeout
, Default]
;ユーザー入力を受け付けるInputBoxを生成する
InputBox
はユーザー入力を受け付けるウインドウを作り、入力された値を変数に代入するコマンド。引数は最低1つ、最大11もの値をとります。
InputBoxのパラメータ
引数名 | 意味 | デフォルト値 |
---|---|---|
OutputVar | ユーザー入力を格納する変数名 (必須) | – |
Title | ウインドウのタイトル | – |
Prompt | 本文のメッセージ | – |
HIDE | 入力されたテキストを隠し、「*」で表示する | – |
Width | ウインドウの横幅 | 375 |
Height | ウインドウの高さ | 189 |
X,Y | 表示するX,Y座標 | 画面の中心 |
Locale | ボタンの文字 (OSの言語によって変化) | – |
Timeout | 入力の時間制限(秒) 経過すると自動的に閉じる | – (最大値は24.8日) |
Default | 入力欄のデフォルト値 | – |
特に難しい部分は無いですが数が多いです。デフォルト値を利用する場合はカンマの数に気を付けましょう。
InputBoxのErrorLevel
KeyWait
など多くの他のコマンドと同様、InputBox
もErrorLevelが設定されています。
ErrorLevel | 発生する場面 |
---|---|
0 | OKボタンが押されたとき |
1 | Cancelボタンが押されたとき |
2 | Timeoutで指定した時間経過で、自動的に閉じたとき |
今回のタイマーではif(ErrorLevel == 0){...}
でOKボタンが押されたときにタイマーをスタートさせ、else{ExitApp}
でOKボタンが押されなかったとき、ファイルの実行を停止しています。
処理的には単純なだけに、様々なカスタマイズが考えられるタイマー、皆さんも今回のコードを参考にしながら、部品を入れ替えたりして自分好みにアレンジしてみてください。