情報科学屋さんを目指す人のメモ

方法・手順・解説を書き残すブログ。私と同じことを繰り返さずに済むように。

【Windows 11】AutoHotkeyで一部のキーを送信できない問題の発生と対策について

AutoHotkey (22) Windows 11 (36)

WIndows 11にてAutoHotkeyを利用しようとしたところ、Windows 10では動作していた.ahkスクリプトのうちの一部が正常に動作しませんでした。

具体的には、上下左右キーの送信(Send)が、Chromeやメモ帳、Explorerなどで動作しませんでした。

今回はこの問題が発生した際に試してみた対策などについて紹介します。

一部のキーが反応しない

Windows 10 PC で利用していたAUtoHotkeyのスクリプト(.ahk)をそのままWindows 11 PCでも利用しようとしたところ、動作するキー操作もあるものの、一部のキーが動作しないことが分かりました。

具体的には、Chrome、メモ帳、Explorerで動作を試し、上下左右キー(Left, Right等)が押しても動作しない様子です。

AutoHotkeyの実行履歴にはキー送信のコードの実行が記録されているものの、動作していない様子です。

EnableUIAccessを実行しても直らず

このような場合、以前は「EnableUIAccess」を利用することで回避した場合もありましたが、今回は効果がありませんでした。

「管理者として実行」や「uACの無効化」でも変化無し

また、管理者として実行して起動してみたり、UACを一時的に無効化してからやり直してみても、変化がありませんでした。

キーの送信方法の変更

このとき、キーのSendには「SendBlind」を利用していました。

SendBlindはこちらの記事で紹介したものです。

ここを変更して、「Send」「SendRaw」「SendInput」「SendPlay」にしてみるとどうなるかを試してみました。

このうち、「Send」や「SendRaw」「SendRaw」「SendPlay」では変わらず動作しなかったものの、SendInputは動作することが分かりました。カーソルキーの送信が、動作しました。

SendBlind関数の中では「Send」を利用していたため、これを「SendInput」に書き換えることとしました。すると、SendBlind関数に依存していたものは、正しく動作するようになりました。

SendModeを変更

これにより、SendではなくSendInputに置き換えることで一通り問題が解決そうだとは分かったものの、多数の「Send」を利用していました。

ただこのSendの動作は「SendMode」コマンドにより「SendMode Play」と、「SendPlay」と同様の動作を行うように指定されていたものであったため、この「SendMode Play」を「SendMode Input」に変更することで、全体が上手く動作することが確認できました(※「SendMode InputThenPlay」でも上手く動作しました)。

コメント(0)

新しいコメントを投稿