C#からWindows APIを叩いてマウスのクリック/右クリック/中央ボタンのクリックをエミュレートする方法を紹介する。
使うAPIは、GetCursorPosとSendInputの2つ。
マウスポインタを移動させる方法を紹介する記事で説明したようにビルドの警告を回避するために次のようにNativeMethodsクラスをつくり、その中でこれらAPIを読み込む。
構造体や共用体の定義が多いのでびびるかもしれないけど、使うAPIはあくまで2つだけで、使う構造体もツリー構造でつながっていたりするので迷うポイントは少ないと思う。(もちろん、APIの公式ドキュメントで定義は確認しておくべき)
そしてこのNativeMethodsクラスを次のように使う。この例ではマウスのクリックを行う。
右クリックをしたい場合はMOUSEEVENTF_LEFTDOWNの部分をMOUSEEVENTF_RIGHTDOWNに、MOUSEEVENTF_LEFTUPの部分をMOUSEEVENTF_RIGHTUPにそれぞれ変えてあげればOK。
中央ボタンのクリックをしたい場合はMOUSEEVENTF_LEFTDOWNの部分をMOUSEEVENTF_MIDDLEDOWNに、MOUSEEVENTF_LEFTUPの部分をMOUSEEVENTF_MIDDLEUPにそれぞれ変えてあげればOK。
ネットで検索するとmouse_event関数を使う方法が多数見つかるけど、この関数は既にSendInput関数に置き換えられたという公式情報があるので注意。
関連ページ:マウス・キーボード操作の自動化機能をつくろう