【AutoHotkey】タイマーを使って見る。
まだタイマーを使ったことがないので試してみます。
ウィンドウをスクロールさせるなどの操作をさせたい場合に待ち時間のタイミングの取り方をスリープで実装してしまうと気が利いた動作にできないことがあります。
今回はテストなので Firefox の生存確認をするスクリプトを組んでみます。
一秒ごとに Firefox のプロセスが生きていることを確認して、亡くなっていたら終了します。
タスクマネージャーなどでAutoHotkeyのプロセスを確認しながら、 Firefox を終了させるとこちらも終了することを確認します。
ご覧の通りAutoHotkeyが常駐してますね。
これが消えることを確認します 。
出来上がったのはこちら。
#Persistent SetTimer, timerTest, 1000 Return timerTest: prc := WinExist("ahk_exe firefox.exe") If (prc = 0) { SetTimer, timerTest,Off ExitApp }
SetTimerでタイマーを設定します。
一定の時間が経過する毎にサブルーチンを呼び出します。
第1パラメータで呼び出されるサブルーチンのラベルを指定します。
第2パラメータでタイマーを発生させたい感覚を設定します。
単位はミリ秒なので1000で1秒となります。
詳しくはこちら。
このサンプルですと一秒ごとにtimerTestが呼び出されることになります。
サブルーチン内で Firefox のプロセスを探して、見つからなかったらスクリプトを終了させます。
#Persistentはスクリプトを常駐プロセスをするために入れます。
今回のようにホットキーの定義がない場合はスクリプトの終わりまでたどり着くと終了してしまいます。
当たり前の話ですが終了されてしまうと監視することはできませんから常駐してもらいます。
最大のはまりポイントはスクリプト終了前にタイマーをオフにしておくこと。
SetTimer, timerTest,Off ExitApp
これをしておかないとタイマーが生きているので、 Auto HOT key のプロセスがいつまでも残ってしまいます。
これに気付かなくて1時間ほど溶かしました。
忘れるな タイマータスクの 後始末。