ぺんちゃん日記

食と歴史と IT と。 Web の旅人ぺんじろうが好奇心赴くままに彷徨います 。

【AutoHotkey】ポーリングのループから左ボタン押下で脱出する。

f:id:yasushiito:20190403184928p:plain
先日作成した Bluetooth デバイスが接続されるまで待機する関数ですが、どうしてもデバイスが準備できない状態でテストする時に30分ループでリトライを繰り返すポーリングから脱出するまで待つのがあまりにもうざかったので、自分が目の前で実行している場合には好きなタイミングで脱出できるようにしたくなりました。

これまでは接続が確認できなかったら60秒間待機していましたが、これからは それを12回に分けて5秒間待機の度に入力判定を行って、何らかのキーが入力されていたら脱出するようにしようと思います。
例えばエスケープキーやシフトキーなど。
ところが私はマウスでスクリーンキーボードを操作しているので、キーを押した状態を受け取ることができません
そこでマウスの左ボタンを押下状態を調べます。

マウスボタンの状態を調べるには GetKeyState を使います。

www.autohotkey.com



ポーリングの中で左ボタンを調べるための内側のループはこんな感じです。

        Loop, 12
        {
            ;左クリックをしていればデバイスが準備できてなくても無視して続行する。
            GetKeyState, l, LButton
            if l = D
                return True
            Sleep, 5000
        }

myahk/WaitBTConnect.ahk at master · yasushiito/myahk



わざわざ出すまでもない気もしますが全体のソースコードはこんな感じです。


この記事に登場するAutohotkey スクリプトについて

この記事の中で私が作成したプログラムは、全て自由に使うことができます。
詳しくはこちら