Я создаю приложение, которое должно фильтровать некоторые щелчки мышью по всей системе. То есть мне нужно заставить систему игнорировать некоторые щелчки мышью в особых случаях.
Я использую низкоуровневый крючок мыши и SetWindowsHookEx
, чтобы отфильтровать эти клики. Работает относительно хорошо, за исключением WPF
приложений. Я думаю, это потому, что эти приложения используют DirectX
и DirectInput
для обработки ввода, и именно поэтому я не могу отфильтровать щелчки в этих приложениях, поскольку они получают входные данные непосредственно из драйвера.
Есть ли способ фильтрации кликов в WPF
/ DirectX
приложениях?
Я знаю, что в общем случае нецелесообразно глобально фильтровать клики, но это важно для моего приложения, и я позабочусь о том, чтобы оно не фильтровалось в играх и других программах. Но у WPF
приложений есть обычные GUI
, поэтому мне нужно отфильтровать и клики в них.
Обновление
Полагаю, я мог бы решить эту проблему, написав свой собственный драйвер фильтрации, но, поскольку у меня нет никакого опыта в написании драйверов, пожалуйста, дайте мне знать, если есть какое-либо другое решение.
Ресурсы перехвата API
Я нашел несколько полезных ссылок, касающихся перехвата API. Используйте это как ссылку.
Подключение Windows API
Обнаружено перехват API
Обнаружено перехват API, часть 2
Перехват вызовов с помощью блокнота
madCodeHook
Подключение функции IAT
ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ
WPF не использует DirectInput, но стандартные сообщения Win32 для обработки ввода (за исключением стилуса, который является источником всех проблем для меня, потому что я использую стилус для разработки, и я не знал Приложения WPF поддерживают стилус). Однако для фильтрации кликов в приложениях, использующих DirectInput, необходимо подключить API, как объясняется в принятом ответе.