[AutoHotKey]マウス操作自動化の基本 – ClickとCoordMode

今まではキーボードのキー入力を発生させてランチャ機能や文字列を出力するなどの機能を実装してきました。

今回はキーボードでマウス操作までエミュレートしてしまおうということで、AutoHotKeyを使ったマウス操作についてお伝えしていこうと思います。

マウスを操作する – Click

まずはマウスのクリック操作を記述してみましょう。

今回は変換キー+Cにマウスのクリック操作を割り当ててみたいと思います。

vk1C & C::Click

Clickと引数無しで記述すると、「現在の位置でマウス左クリック」を割り当てることができます。

Clickの引数

Clickにも引数があり、それらの組み合わせによって様々な動作を表現できるようになっています。down/upを利用すればドラッグ&ドロップも表現することが可能です。

珍しく引数の順番は問われず、基本的にどんな順番で書いても同じ動作となりますが、数値に関してはこの順番で記述してください。

  1. 数値が1つだけの場合はクリック数
  2. 数値が2つの場合はX,Y座標
  3. 数値が3つの場合はX,Y,クリック数
コマンド例動作
Click,2現在位置でダブルクリック
Click,300,500,0座標X=300,Y=500に移動 (ウインドウ基準 クリックしない)
Click,300,500座標X=300,Y=500でクリック (ウインドウ基準)
Click,300,500,2座標X=300,Y=500でダブルクリック (ウインドウ基準)
Click,300,500,Relative座標X=300,Y=500でクリック (現在位置からの相対座標)
Click,Right右クリック
Click,Right,300,500座標X=300,Y=500で右クリック
Click,down左ボタンを押し下げ
Click,up左ボタンを離す
Click,WU,11回ホイールアップ
Click,WD,1010回ホイールダウン

ちなみに座標指定には

  1. 画面の左上端を基準とした絶対座標
  2. アクティブウインドウの左上端を基準とした相対座標
  3. マウスポインタの現在位置を基準とした相対座標

大きく分けて以上の3種類があります。

座標指定の基準を設定する

Clickでは指定した座標がどこを基準(0,0)にするのかを決めることができます。何も設定しなければアクティブウインドウを基準とした相対座標です。

例えばGoogle Chromeの一番左のタブをクリックする場合にX=200,Y=30あたりを指定しておけば、Chromeがどんなサイズで画面上のどこに表示されていようが、アクティブウインドウの左上端を基準として動作するので、クリックされるのは常に一番左のタブになります。

Chromeがアクティブであればウインドウが中途半場な位置にあっても、

指し示すのは常に一番左のタブ。

引数Relativeで現在位置を基準に

現在位置を基準(0,0)とした座標指定をするのであれば、上の表のようにClick関数の引数に「Relative」を指定しましょう。

ただ現在のポインタの位置を基準として動くので、当然ポインタの位置が変われば移動する先の位置も変化します。そのため「毎回同じ動作をさせる」という意図であればあまり使わないかもしれません。

CoordModeで座標指定の基準を設定する

上記2つはアクティブウインドウやポインタの現在位置からの相対座標ですが、「画面のここ」を絶対座標で指し示したい場合、CoordModeで指定することもできます。

vk1C & C::
CoordMode, Mouse,Screen
Click,200,30
Return

CoordModeは2つの引数を取ります。特に第1引数は全て把握しようとするとかなり広い範囲になってしまうので、ここでは「マウス操作で画面上の絶対座標を指定する」という意図であればMouse,Screenと書くということだけ覚えておきましょう。

  • 第1引数

    引数何のコマンドにこの設定を適用するか
    MouseMouseGetPos、 Click、MouseMove、MouseClick、MouseClickDrag
    ToolTipToolTip
    PixelPixelGetColor、PixelSearch、ImageSearch
    Caret組み込み変数A_CaretX、A_CaretYの座標
    MenuMenu
  • 第2引数

引数座標指定の基準
Relative
(デフォルト)
アクティブウインドウの左上端が基準の相対座標
CoordMode, Mouse,,の場合Relative
Window同上 (表記が分かりやすく推奨されている)
Screen
(引数省略時)
画面の左上端が基準の絶対座標
CoordMode, Mouseの場合Screen
Clientアクティブウインドウから、
タイトルバーやメニュー部分を除いた表示部分が基準の相対座標

まとめ – ブログ執筆環境を1キーで立ち上げる

皆さん仮想デスクトップ使ってますか?

僕は最近まで1つのデスクトップだけで作業してましたが、アプリケーションの切り替え作業が頻繁にあると煩わしいので、今は仮想デスクトップを使用して切り替えてます。

基本は1つ目のデスクトップにChrome、2つ目にはTypora、3つ目にVSCodeを立ち上げててますが、問題はマシン起動時です。

  1. PCを起動してChrome起動
  2. 仮想デスクトップを切り替えてTyporaを起動
  3. 再び切り替えてVSCode起動
  4. 1つ目のデスクトップに戻って、WordPressの記事一覧ページを開く

…全く同じ手順を毎回やるとなると、正直面倒になってきます。

そこで、今回ご紹介したマウス操作でこのブログ執筆環境の立ち上げを自動化してみようと思います。

※以下のコードはあくまでマウス操作のサンプルですので、汎用性は低く実用的なものではありません。同じことを他のコマンドを使ったりすればもっとスマートに、安全に実現可能です。
あくまで現時点での限られたコマンドでも、この程度は自動化できるというサンプルとしてご覧ください。
F13::
Clipboard = https://pouhon.net/wp-admin/  ;クリップボードにWordPressのアドレスを代入
Click,370,1420     ;Chromeのタスクバーアイコンをクリックして起動
sleep,500        ;待機
Send,^#{Right}     ;仮想デスクトップを1つ右に切り替え
Click,830,1420     ;Typoraのタスクバーアイコンをクリックして起動
Sleep,2000       ;待機
Send,^#{Left}     ;1度Chromeに戻る
Sleep,500        ;待機
Click,600,75     ;アドレスバーをクリック
Send,^a         ;バーのテキストを全て選択
Sleep,100       ;待機
Send,^v         ;クリップボードのアドレスをペースト
Sleep,500        ;待機
Send,{Enter}     ;EnterボタンでWordPressに移動
Sleep,3000       ;待機
Send,^#{Right}     ;デスクトップ切り替え(待機を挟んで2回右へ)
Sleep,300
Send,^#{Right}
Click,480,1420     ;VSCodeのアイコンをクリックして起動
Sleep,2000       ;待機
Click,370,1420     ;デスクトップをChromeに切り替え
Sleep,500        ;待機
Click,150,450,0     ;WordPressメニューの「投稿」にマウスを移動してサブメニューを開く
Sleep,1000       ;待機
Click,330,460       ;サブメニューの「投稿一覧」を開く
Return

これまでにご紹介した単純なコマンドを並べるだけで3つのアプリケーション起動からWordPressの「投稿一覧」を開くまでの作業が1キー押すだけで再現できます。

みなさんもぜひAutoHotKeyで色々と試行錯誤して、最高の環境作りを目指してみてください。

タイトルとURLをコピーしました