【AutoHotkey】ポーリングのループから左ボタン押下で脱出する。
先日作成した Bluetooth デバイスが接続されるまで待機する関数ですが、どうしてもデバイスが準備できない状態でテストする時に30分ループでリトライを繰り返すポーリングから脱出するまで待つのがあまりにもうざかったので、自分が目の前で実行している場合には好きなタイミングで脱出できるようにしたくなりました。
これまでは接続が確認できなかったら60秒間待機していましたが、これからは それを12回に分けて5秒間待機の度に入力判定を行って、何らかのキーが入力されていたら脱出するようにしようと思います。
例えばエスケープキーやシフトキーなど。
ところが私はマウスでスクリーンキーボードを操作しているので、キーを押した状態を受け取ることができません。
そこでマウスの左ボタンを押下状態を調べます。
マウスボタンの状態を調べるには GetKeyState を使います。
ポーリングの中で左ボタンを調べるための内側のループはこんな感じです。
Loop, 12 { ;左クリックをしていればデバイスが準備できてなくても無視して続行する。 GetKeyState, l, LButton if l = D return True Sleep, 5000 }
myahk/WaitBTConnect.ahk at master · yasushiito/myahk
わざわざ出すまでもない気もしますが全体のソースコードはこんな感じです。
この記事に登場するAutohotkey スクリプトについて
この記事の中で私が作成したプログラムは、全て自由に使うことができます。
詳しくはこちら。