ぺんちゃん日記

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

【AutoHotkey】スクリーンキーボードの表示位置を変更する。

f:id:yasushiito:20190403184928p:plain
スクリーンキーボードって結構操作の邪魔になります。
私の環境では常に音声入力ウィンドウやショートカットボタンなども表示しているので、画面の1/4くらいは操作系のパネルで埋まっています。

f:id:yasushiito:20190416181933p:plain

こいつらが視界を遮るのでまとめて移動させたいと思います。
defaultでは画面右下に配置しているのですが、状況に合わせて左下に移動したり戻したりしたいです。
音声入力ウィンドウなどは既にウィンドウハンドルを掴んで操作していますので実装の障壁になることはありません。
未経験なのがスクリーンキーボードの移動です。
これがまたガッツリはまりましたので記事にしました。

Auto HOT Key に添付されている Windows SPY で調査してみると、スクリーンキーボードの実行ファイル名はosk.exeです。
f:id:yasushiito:20190416180436p:plain
これを頼りにウィンドウを操作するにはこんな感じで良いと思います。

    kbd := %ErrorLevel%
    If (kbd <> 0) {
        WinMove,ahk_exe osk.exe, ,113,48
    }

しかしこれが動かないんだな。
実行ファイル osk.exeが起動していることを確認できているし,ウィンドウの位置を取得することは出来るのですが、位置を変えようとすると蹴られてしまう。

これはスクリーンキーボード特有の現象ではないかと想像したので、検索対象をAutoHotkeyに絞らずに調べてみます。

www.google.com

それっぽいのが見つかりました。
言語は違うもの、現象が同じなので手がかりになるのではないかと思います。


sh-yoshida.hatenablog.com

なるほど。
ハンドルの取得に時間がかかる上に管理者権限が必要と。
こちらの環境ではハンドルの取得は即座に終わるようなので、管理者権限で実行すればよいということになります。

検索キーワード[AutoHotkeyを管理者権限で起動]で調べます。

qiita.com

Auto HOT key スクリプト管理者権限で実行するにはエクスプローラーから右クリックメニューを使います。
スクリーンキーボードの配置を変更するスクリプトを選択しておいて、コンテキストメニューから[管理者として実行]をクリックするだけですね。

やはり権限が問題だったのでしょう、ばっちり動きました。

ところで管理者権限で実行する場合にはアプリケーションに権限を与えることを許可するダイアログが開きます。
アプリケーションをインストールする時などに開くあれですね。
つまりスクリーンキーボードの表示位置を変更するたびに管理者権限による実行の許可を求められてもですね。
これはユーザ体験としては最悪のものと言えるでしょう。
配置を変更したいと言う要求は達成できましたが、また別の問題が発生しましたね。
どうしよう。