マクロのクリック位置がズレる原因|自作ツールを無料配布します

マクロのクリック位置がズレる原因|自作ツールを無料配布します アイキャッチ
  • URLをコピーしました!

3年くらい、macroni っていうマクロツールを使ってた。マウスとキーボードの操作を記録して、そのまま繰り返してくれるやつだね。

それがある日、クリックする場所が全然ちがうところになった
設定を変えた覚えもないし、マクロも直してない。それなのに、押してほしい場所から1000px以上ずれたところをクリックしてる。

原因を追いかけたら、けっこうはっきりした理由が出てきた。しかも1画面の人には絶対に起きない種類のやつだったよ。

この記事では、その原因と、結局わたしが自分でツールを作り直すことになった話を書くね。作ったものは無料で配ってるので、同じところで困ってる人はそのまま使ってもらって大丈夫。

目次

クリック位置がズレる原因は「座標の基準」だった

クリック位置がズレる原因は「座標の基準」だった イメージ

Windows にマウスの位置を伝えるとき、座標はそのまま渡すんじゃなくて、0〜65535 の値に直してから渡す決まりになってる。

問題はここ。「何を基準に直すか」に2通りあるんだよね。

  • プライマリモニタだけを基準にする
  • 全部のモニタを合わせた範囲(仮想スクリーン)を基準にする

この2つが食い違うと、クリック位置がズレる。

わたしの環境は4画面で、全部合わせると 6400×1800。でもプライマリは 2560×1080 しかない。この差がそのままズレになって出てた。

指定した座標実際に押された場所ズレ
(1955, 801)(2969, 1335)+1014, +534
(2370, 740)(4006, 1234)+1636, +494
実測(2026-08-28・4画面環境)

ここで大事なのは、1画面だけの環境だと、この2つの基準が一致するってこと。
つまり1画面で使ってる限り、この不具合は永久に起きない。

だから作った人も気づけないんだよね。バグを見つけて報告する側にも回りにくい。「自分の設定が悪いのかな」で終わっちゃうから。

もう1個あった。「待ち時間0」にしても速くならない

もう1個あった。「待ち時間0」にしても速くならない イメージ

ついでに調べてたら、前から気になってたことの答えも出てきた。
待ち時間を 0 にしても、なぜか連打が遅いやつ。

これは Windows 側の仕様で、待機の時間はだいたい 15.6ms 刻みに丸められる0 と書いても1手ごとに待たされる。

8手の連打だと、合計で約125ms。60fps のゲームで7フレームぶんだよ。そりゃ遅いよね。

直せなかったので、自分で作り直した

直せなかったので、自分で作り直した イメージ

原因は分かったけど、使ってたツールは中身をいじれない。
ということで、同じことができるものを自分で作ることにしたよ。MacroLab っていう名前にした。

作り始めたのが 8月28日の15時41分で、GitHub に置いたのが翌朝の11時4分。19時間半だったよ。
もちろん寝てる時間も入ってるけどね。

さっきの2つはこう直した。

  • ズレ:内部の座標を全部「仮想スクリーン基準」に統一した。実測で 0〜1px まで収まったよ(4画面ぜんぶ)
  • 待ち:実行中だけタイマーの刻みを細かくして、「長い間は寝て、最後の2msだけ空回し」する形にした。1ms待機の平均ズレが 0.009ms になった

あと、macroni のマクロファイル(.mcrn)はそのまま開けるようにしてある。
3年ぶんの資産を捨てなくていいのが、自分にとっては一番大事だったので。

ついでに足した機能

どうせ作るならということで、使ってて「これ欲しかったな」と思ってたものも入れた。

機能できること
操作の記録実際にクリック・入力すると、そのまま行になる。待ち時間も実測で入る
ウィンドウ基準の座標ウィンドウを動かしても壊れない
選んだ行だけ試す1行だけ実行して確かめられる
一時停止止めずに中断して、続きから再開できる
最後の停止キーCtrl + Shift + Alt + F12。設定でつぶせない
どこにいても効くキーほかのアプリを触りながら実行・停止できる
中クリックmacroni には無かったやつ

「最後の停止キー」だけは、設定画面から消せないようにしてある。
マクロが暴走した時に止められないのが一番こわいからね。

ダウンロード(無料)

GitHub に置いてあるので、そのまま落として使ってもらって大丈夫だよ。

MacroLab のダウンロードページ(GitHub)

  • MacroLab-1.0.0-standalone.zip(52MB)… そのまま動く。迷ったらこっち
  • MacroLab-1.0.0-dotnet9.zip(0.4MB)… .NET 9 が入ってる人向け

動作環境は Windows 10 / 11(64bit)。
初回は「発行元不明」の警告が出ると思うので、そこは自己判断でお願いします。

「自分用に作り替えてほしい」もやってます

ここまで書いておいてなんだけど、このツールが誰にでも合うとは思ってない
わたしが自分の困りごとに合わせて作ったものだからね。

「この機能だけ欲しい」「うちの業務だとこう動いてほしい」みたいなのがあれば、そういう形に作るのも仕事として受けてるよ。

現役エンジニアがあなた専用ツールを作ります(ココナラ)

相談だけでも大丈夫。「これって作れるの?」の段階で聞いてもらったほうが、たぶんお互い早いと思う。

まとめ

  • マクロのクリック位置がズレるのは、座標の基準が食い違ってるのが原因(マルチモニタ限定)
  • 待ち時間0が遅いのは、Windows が 15.6ms 刻みに丸めてるから
  • どっちも直したものを GitHub で無料配布してるよ
  • macroni の .mcrn はそのまま開ける

同じところで詰まってた人の役に立ったら嬉しいな。

よかったらシェアしてね!
  • URLをコピーしました!
目次