アプリケーションにすでにWH_MOUSE_LLフックがありますが、マウスとタッチパッドで異なる動作が必要です。
Raw Input APIについては知っていますが、フックで使用する方法がわかりません:(
助言がありますか?
複数のキーボード デバイスを区別するのと同じはずです。
一部のタッチパッド ドライバーを逆アセンブルして、その動作を確認します。これが唯一の方法です。ドライバはマウス エミュレーションのさまざまな方法を使用する可能性があるためです。そして、私の答えに投票することを忘れないでください;)。
あなたの場合、おそらくRaw Inputで十分です。入力をキャプチャできることに関する制限を知っているが、キャプチャした後にそれを防ぐことができないということを超えて、それを使用した経験はありません。つまり、キャプチャしたとしても、他のアプリケーションでキーストロークとマウスイベントが発生します。生の入力で。最後に、これは私が海外のフォーラムで学んだことです。
私は、デバイスを区別し、入力を傍受し、この入力が. これは、デバイス フィルター ドライバーと内部的に通信する C ライブラリです。
github には、デバイスの曖昧さを解消するための 2 つの基本的なサンプルがあります。
2 つのサンプルの主な違いは、hardwareid サンプルが、デバイス ハードウェアによって提供される識別子 (ベンダー ID、製品 ID、場合によってはシリアル情報など) を取得する方法を示していることです。問題は、通常、このように提供された情報だけでは、2 つの同一のデバイスを区別するのに十分ではないことです。それらはたまたま同じベンダーのものであり、同じモデルを持っており、合計すると同等ですが、同じではありません。したがって、曖昧さを解消するために最後に必要なのは、ある種の接続 ID であり、再接続時に変更される可能性がありますが、実行時に曖昧さを解消するのに役立ちます。
私は macbook を持っていて、マジック マウスとライブラリを使って (ブートキャンプで) タッチ パッドを区別することができました。
その他のドキュメントはhttp://oblita.com/Interceptionにあります。
注: 現在、ライブラリには 10 個のキーボードと 10 個のマウスの制限があります。
さまざまな USB デバイスからデータを読み取る非常に単純な例: http://sourceforge.net/projects/libusbdotnet/
このオープン ソースの C# プロジェクト。モジュールTest_Bulk
はまさに、USB デバイスとそこからの読み取り (書き込み) データを区別したいものです。
私は cnPackRawInput を試してみましたが、うまくいきました。それには KeyboardFromHandle 関数があり、それが私の特別なキーボード (例: msr デバイス、バーコード スキャナー) であるかどうかを比較できます。しかし、ポインティングデバイスを処理するかどうかについてはわかりません。とにかく試すことができます。使用できるよりもサポートしている場合。
下手な英語でごめんなさい。