wme*_*yer 11 c++ winapi touch setwindowshookex windows-8
我已经成功地安装一个WH_GETMESSAGE带有钩SetWindowsHookEx,我可以看到的WM_POINTERDOWN,WM_POINTERUP等应用程序接收消息.(它是在Windows 8.1上运行的32位桌面应用程序.)
现在,我不仅希望看到这些消息,而且还想删除其中一些消息.
GetMsgProc的文档说:
GetMsgProc挂钩过程可以检查或修改消息.在钩子过程将控制权返回给系统之后,GetMessage或PeekMessage函数将消息以及任何修改返回给最初调用它的应用程序.
有了WM_KEYUP消息,这似乎工作正常.我可以将消息设置为WM_NULL挂钩,并且键事件将消失.
WM_POINTER...但是,对于消息,这似乎不起作用.应用程序仍然接收消息(在调试器中验证).
也许有其他方法来过滤/删除此类消息?
编辑:它必须使用未修改的第三方应用程序(因此使用钩子).
更新:我设法通过积极调用PeekMessage钩子来阻止点击事件(从长远来看可能不是一个好主意).但是,我仍然无法阻止通过触摸滚动.
解决方案一:
WH_GETMESSAGE不是为了删除或修改消息而设计的,只是为了监视它们。不幸的是,马克的替代解决方案 - 使用WH_KEYBOARD_LL和WH_MOUSE_LL- 似乎也没有解决问题(因为多点触控不属于鼠标消息的类别)。对不起,标记!
我想指出的是,它在预期窗口之前WH_CALLWNDPROC接收消息。这似乎是修改消息的公认方法。
解决方案2:
目标窗口可能WM_POINTER...根本不关心消息!它可以通过原始输入API 检测触摸输入,就像这里的演示一样。WM_INPUT也请尝试留意消息。
注 1:原始输入消息可以删除,但不能修改或创建。
注2:我不完全确定,但未处理的WM_INPUT消息可能会造成内存泄漏,因为该东西实际上是一个巨大的指针。为了以防万一,请在挂钩过程中处理消息。
| 归档时间: |
|
| 查看次数: |
2454 次 |
| 最近记录: |