3

現在、複数のマウス デバイスからのクリックを処理するアプリケーションを作成しました。

私はこのプロジェクトを使用し、マウスのクリックをキーボードと同じように処理するように変更しました。

これは正常に機能していますが、アプリで処理された場合にクリック イベントを抑制する方法があるかどうかを知る必要があります。このアプリはクイズ ゲームなので、クイズ マスターには 1 つのマウスがあり (それでも使用できます)、他の参加者には (ブザーとして) 自分のマウスがあります。そのため、バズが発生したときに、オペレーティング システム (または少なくともこのアプリケーション) でマウス クリック イベントが発生することは望ましくありません。

概念は、void WndProc(ref Message message)のおなじみのオーバーライドであるため、クリックイベントを発生させたくない場合はbase.WndProc(ref Message)を呼び出さないようにしましたが、これは機能しませんでした。

ここで誰かが私を正しい方向に向けることができますか?

Windows フックルートを使用する必要がありますか? これを見ましたが、各マウスデバイスに個別にフックする方法がわかりません。

どんな助けでも大歓迎です。

編集:

これは Windows フォーム UI プロジェクトであり、WPF ではありません。そのため、Microsoft の MultiPoint SDKは機能しません。

4

1 に答える 1

2

これに対する解決策は、WndProc ではなく、PreFilterMessage() にあります。フォームに到達する前にメッセージをインターセプトすることで、メッセージ ポンプからメッセージを削除し、クリックされたコントロールに到達しないようにすることができます。これは、フォーム内の子コントロールにも機能します。

私はこれに答え、次の質問に完全なソースを投稿しました:

C# マウス ハンドルを取得する (GetRawInputDeviceInfo)

于 2013-01-30T14:42:18.200 に答える