AutoHotkeyで修飾キー(Ctrl,Shift,Alt,Win)の状態(^!+#)を取得する関数を作る方法
modifier(修飾キー)を取得する
押し下げ状態は、GetKeyStateで取得できます。今回は、その結果を、Sendの引数として利用できる形式(^、+、!、#の結合)で取得する関数get_modifiers()を作成します。
get_modifiers()
定義は次の通り。
get_modifiers() { modifiers := "" if GetKeyState("Ctrl", "P") modifiers = %modifiers%^ if GetKeyState("Shift", "P") modifiers = %modifiers%+ if GetKeyState("Alt", "P") modifiers = %modifiers%! if GetKeyState("Win", "P") modifiers = %modifiers%`# return %modifiers% }
現在キーボードのWinキーをF17キーに変更してしまったのでWinキーについては試せていませんが、他の修飾キーに関しては問題なく動作しています。
modifiers := get_modifiers() Send, %modifiers%{%key_name%}
のようにして、利用できると思います。特に「AutoHotkeyで変数名を組み立てて変数の中身を取得するちょっと不思議な方法」などと組み合わせるといろいろ出来ると思います。お試しあれ。
Windowsダンプの極意 エラーが発生したら、まずダンプ解析!
Advanced Windows 第5版 上 (マイクロソフト公式解説書)
インサイド Microsoft Windows 第4版〈上〉 (マイクロソフト公式解説書)
APIで学ぶWindows徹底理解
| HOME |
[AutoHotkeyで関数の返値を変数に代入する書き方] OLD>>
この記事のコメント
こちらの記事を参考にコーディングしたんですが、このままだとWindowsキーを返してくれないようです。で、調べてみたのですがAHKのキーリストにLWinとRWinはあるのですが単体のWinは無いようです。
9行目を
if GetKeyState("RWin","P")||GetKeyState("LWin","P")
に変更するとちゃんと動きました。
不躾かもと思いましたが参考まで