I'm building an application which needs to filter some mouse clicks system-wide. That is, I need to make the system ignore some mouse button clicks at special occasions.
I use low level mouse hook and SetWindowsHookEx
to filter out these clicks. It works relatively well, except for WPF
applications. I guess that's because these applications use DirectX
and DirectInput
for input processing, and that's why I can't filter out clicks in these applications, since they get the input directly from the driver.
Is there any way how to filter clicks in WPF
/DirectX
applications?
I know it is generally not good idea to globally filter clicks, but it is crucial for my application, and I will make sure that it is not filtered in games and other programs. But WPF
applications have ordinary GUI
, so I need to filter clicks in them as well.
Update
I guess I could solve this problem by writing my own filtering driver, but since I don't have any experience in writing drivers, please let me know if there is any other solution.
API Hooking Resources
I've found some helpful links regarding API hooking. Use this as a reference.
Hooking Windows API
API hooking revealed
API hooking revealed Part 2
Hijack Textout Calls From Notepad
madCodeHook
IAT Function Hooking
FINAL SOLUTION
WPF does not use DirectInput, but standard Win32 messages for input handling (except for stylus, which is the source for all problems for me, because I use stylus for development, and I wasn't aware WPF apps are stylus-aware). However for filtering clicks in apps that use DirectInput, one would have to hook API, as the accepted answer explains.
WH_MOUSE_LL
, which does not need it's own.dll
. Nevertheless, this is actually a very good idea! But I will need to learnDirectX
andDirectInput
, to hook the right functions. :-( – Rottweiler