システム全体でいくつかのマウス クリックをフィルタリングする必要があるアプリケーションを構築しています。つまり、特別な場合にシステムがマウス ボタンのクリックを無視するようにする必要があります。
低レベルのマウスフックを使用SetWindowsHookEx
して、これらのクリックを除外します。アプリケーションを除いて、比較的うまく機能しWPF
ます。DirectX
これは、これらのアプリケーションが入力処理にとを使用しているからだと思いDirectInput
ます。これらのアプリケーションでは、ドライバから直接入力を取得するため、クリックを除外できません。
WPF
/DirectX
アプリケーションでクリックをフィルタリングする方法はありますか?
クリックをグローバルにフィルタリングすることは一般的には良い考えではありませんが、私のアプリケーションにとっては重要であり、ゲームや他のプログラムでフィルタリングされないようにします. ただし、WPF
アプリケーションには通常GUI
の があるため、それらのクリックもフィルタリングする必要があります。
アップデート
この問題は、フィルタリング ドライバを自作することで解決できると思いますが、ドライバを書いた経験がないので、他に解決策があれば教えてください。
API フック リソース
API フックに関する役立つリンクをいくつか見つけました。これを参考にしてください。
Windows APIの
フックAPI フックの解明
API フックの解明 パート 2
メモ帳からの Textout 呼び出しのハイジャック
madCodeHook
IAT 関数のフック
最終的解決
WPF は DirectInput を使用しませんが、入力処理に標準の Win32 メッセージを使用します (開発にスタイラスを使用し、WPF アプリがスタイラス対応であることを知らなかったので、すべての問題の原因であるスタイラスを除きます)。ただし、DirectInput を使用するアプリでクリックをフィルタリングするには、受け入れられた回答で説明されているように、API をフックする必要があります。