私は、Webブラウザーゲームと対話するC#アプリケーションを作成しており(悪意のある目的ではなく、自動化の課題のためだけに)、マウスを動かし、クリックしてから前のポイントに戻すことで対話を機能させています。
私が今やろうとしているのは、カーソルを動かさずにポイントをクリックすることです。これにより、実行中にマウスを動かしてもミスクリックが発生しなくなります。位置をクリックするために使用できるWindowFromPointフックとSendMessageフックを見つけました。テストでは、この組み合わせを機能させることができました。しかし、このフックの組み合わせをゲームが配置されているChrome Webブラウザーで機能させようとすると、クリックされません。
クロムが非常に複雑であるため、間違ったハンドルが収集されていると思います。しかし、私がそれが機能すると思ったのは、WindowFromPointが開いている現在のブラウザータブのハンドルを提供するので、SendMessageは必要な場所でクリックを実行できるようになるということです。
これが私が使用しているコードです。開始と終了は両方とも、クリックしたい位置にあるPointオブジェクトです。
IntPtr hWnd = WindowFromPoint(start);
if(hWnd != IntPtr.Zero) {
SendMessage(hWnd, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
IntPtr hWnd2 = WindowFromPoint(end);
SendMessage(hWnd2, BM_CLICK, IntPtr.Zero, IntPtr.Zero);
}
ブラウザタブでゲームをクリックするために私がしなければならないことは何かありますか?