0

マウスイベントがどこから来たのかを把握する方法はありますか?つまり、WindowsでC / C ++プログラムをコーディングし、その上でマウスクリックイベントを取得した場合、このイベントがマウスドライバー、タッチパッドから発生したものか、アプリケーションによって送信されたものか(マウスイベント)を確認するにはどうすればよいですか。 WM_LBUTTONDOWNのような適切なメッセージを送信することによるシミュレーション)。

助けてくれてありがとう:)

4

2 に答える 2

2

これは、ユーザーモードのアプリケーションでは不可能です。マウスイベントは通常、イベントソースに関する文書化された情報を提供しません。Win32 API関数GetMessageExtraInfoによってメッセージの追加情報を取得する方法はありますが、このデータを安全に解釈する方法はありません。これは非常にデバイス固有であり、文書化されておらず、存在することが保証されることはありません。

このタスクを解決するには、WindowsDDKサンプルに基づいて独自のマウスフィルタードライバーを開発する必要があります。

そのコールバックには、入力パラメータMOUSE_INPUT_DATA(マウスイベント情報を含む構造)があります。フィールドがありますUnitId

UnitIdマウスデバイスのユニット番号を指定します。マウスデバイス名の形式は、です\Device\PointerPortN。接尾辞Nはデバイスのユニット番号です。たとえば、名前が、のデバイス\Device\PointerPort0のユニット番号は0であり、名前がのデバイス\Device\PointerPort1のユニット番号は1です。

于 2012-09-27T15:25:56.617 に答える
0

GetAsyncKeyState関数を使用して、ボタンが押されたかどうかを確認できますが、残念ながら、SendInputはこの関数をだますことはできません。したがって、マウスクリックをシミュレートできますが、プログラムはボタンが実際に押されたかどうかを確認できます。

したがって、独自のマウスドライバを作成する方が適切です。ボットのマウス/キーボードの動作をシミュレートするための安全な方法が必要でした。ブログhttp://poker-botting.blogspot.fr/2012/11/how-to-simulate-mouse-and-に詳細な記事を書きました。 Keyboard.html

于 2012-11-11T00:08:40.410 に答える