アプリ版:「スタンプのみでお礼する」機能のリリースについて

外付ディスプレイで AutoHotkey の MouseMove コマンドを実行するとマウスカーソルが指定座標からズレた位置に行ってしまいます。

内臓ディスプレイのほうではそういったことはなく指定座標にきちんと行ってくれます。

これはなぜなのでしょうか。
問題解消のため関数かサブルーチンをつくりたくても原理がわからず対応できずにおります。

詳しい方、何卒 お願い申し上げます。

質問者からの補足コメント

  • 利用している座標はウィンドウ内の相対座標です。
    Window Spy で読み取った座標を引数として実行してもその場所に行ってくれません。

      補足日時:2023/03/06 00:07

A 回答 (1件)

外付けディスプレイと内臓ディスプレイで、解像度や倍率の違いが原因で座標の認識が異なってしまうことが考えられます。



AutoHotkeyでは、CoordModeコマンドで座標系を指定することができます。デフォルトの座標系は、ウィンドウ内の相対座標になっていますが、"Screen"と指定することで、画面全体の座標系に変更することができます。その場合、MouseMoveコマンドに渡す座標も画面全体の座標系に合わせた座標にする必要があります。

具体的には、以下のようにCoordModeを設定してからMouseMoveコマンドを実行することで、外付けディスプレイでも正確にマウスカーソルを移動させることができるかもしれません。

Copy code
CoordMode, Mouse, Screen
MouseMove, X座標, Y座標, 0

また、別の解決策として、外付けディスプレイで利用する場合には、Window Spyで取得した座標に、外付けディスプレイの解像度や倍率に応じた補正値を加算する方法もあります。具体的には、以下のようにすることができます。

.sql
Copy code
CoordMode, Mouse, Window
; 外付けディスプレイの解像度が1920x1080、倍率が150%の場合
MouseMove, X座標 + 288, Y座標 + 162, 0

このように、AutoHotkeyではCoordModeコマンドを使って座標系を指定することで、マルチディスプレイ環境でも正確にマウスカーソルを移動させることができます。
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!