なでしこ1の「マウス移動」などで指定した位置にマウス移動しない!
または母艦の位置が思った場所に行かない!
という現象があります。
windowsのディスプレイ設定の倍率が100%でないときに発生します。
高解像度のノートPCとかだと、推奨(初期値)が200%になっている模様。
試してみた
母艦のX座標を100に指定します。
窓キャプチャ
で画像を撮り、画像のX=100のところに赤線を引きます。
これをディスプレイの設定100%と150%で実行結果を見比べます。
母艦の位置は「100,0」 //←母艦のX=100
1秒待つ
AAAとはイメージ
AAAへ「デスクトップ」を窓キャプチャ
線色は赤色。線太さは2
AAAの100,0から100,100へ線 //←画像のx=100のところに赤線
実行結果(なでしこエディタを最大化して実行)
・ディスプレイ100%時
・ディスプレイ150%時
画像の右側の「なでしこ」のウィンドウが母艦です。
赤線と母艦は両方ともX=100を指定していますが、150%にするとずいぶん離れてしまいました。
画像上では母艦はX=150あたりにいます。
つまり、窓キャプチャの画像で調べた座標(X=100)を指定すると、150%ズレた位置(X=150)くらいにいくのです。
スクリーンショットツール+ペイントで調べた座標でも同様です。
このズレはマウス移動
でも同様です。
X=100を指定してマウス移動
すると、画像上のX=150あたりに行きます。
思った位置(=画像で調べた位置)にマウスカーソルが移動しないことになります。
画像の座標から補正する
画像で調べた位置にマウスカーソルが行くためにはどうしたらよいかと言うと、ディスプレイの設定を見て150%なら100/150(125%なら100/125)を座標に乗算します。
プログラムからディスプレイの拡大率をおしはかる方法は、よくわかりませんでした!
母艦の位置は「{100*100/150},0」 //←X=100に 100/150 を乗算
1秒待つ
AAAとはイメージ
AAAへ「デスクトップ」を窓キャプチャ
線色は赤色。線太さは2
AAAの100,0から100,100へ線
実行結果
赤線がX=100、右のなでしこウィンドウが母艦(X=100*100/150)
座標を調べなおす場合
前述の通り、画像に撮ってから座標を調べる方法がアテにならないことがわかりました。
自動クリックするプログラムをこれから作る場合、座標は机上マウスX,机上マウスYで調べるとよいです。
これで得られる座標はそのままマウス移動に使えます。
以下のプログラムはキーを押すとマウス移動命令を生成してクリップボードにコピーするプログラムです。
母艦のキー押した時は~
x=机上マウスX
y=机上マウスY
母艦のタイトルは「{x},{y}」
「{x},{y}へマウス移動」をコピー //プログラム文の生成
本命のプログラムにコピーしたプログラムを貼りつけしていく感じ。