WH_MOUSE_LL 钩子,避免得到无用的 WM_MOUSEMOVE 事件

Posted

技术标签:

【中文标题】WH_MOUSE_LL 钩子,避免得到无用的 WM_MOUSEMOVE 事件【英文标题】:WH_MOUSE_LL hook, avoid getting useless WM_MOUSEMOVE events 【发布时间】:2012-10-07 17:10:42 【问题描述】:

有没有办法避免在WH_MOUSE_LL 钩子中接收WM_MOUSEMOVE 事件?我只对***旋转和按钮感兴趣。接收WM_MOUSEMOVE 的性能成本在我的场景中是不可接受的。

我不能使用WH_MOUSE

【问题讨论】:

【参考方案1】:

没有办法告诉钩子不接收特定消息。当您挂钩鼠标时,尤其是低级挂钩时,您会收到鼠标所做的一切。

【讨论】:

根据您的经验,是否足以有一个完全专用于该钩子的线程(一个简单的GetMessage 循环,一种快速调度到主线程,实时优先级)来降低性能问题? 鼠标不是很灵敏。这可能是由于安装钩子的线程并不完全专用于消息循环(它用PeekMessage 然后GetMessage 泵送它们,它不会在对GetMessage 的阻塞调用中等待它们) .

以上是关于WH_MOUSE_LL 钩子,避免得到无用的 WM_MOUSEMOVE 事件的主要内容,如果未能解决你的问题,请参考以下文章

vc里面拦截WM_PAINT,并在钩子过程函数里面增自绘的SetWindowsHookEx的第一个参数指定为哪一个?

在我的代码完成运行之前,如何防止事件被传递到 GUI?

设置进程 DPI 感知,以便系统补偿缩放因子

高 DPI 缩放、鼠标挂钩和 WindowFromPoint

VueJs - 避免无用的 v-for 迭代

sql优化