跟踪鼠标输入事件
Tracking mouse input events
当前使用SendInput(MOUSEEVENTF_MOVE)
模拟鼠标运动。 在处理之前,SendInput
将新的鼠标事件添加到线程输入队列中。
是否可以跟踪/检查是否实际处理了特定事件?
在WndProc
中跟踪WM_MOUSEMOVE
是没有选项的,因为用户可以同时发出未模拟的鼠标运动。
是否可以跟踪/检查是否实际处理了特定事件?
一般:no。
SendInput
在处理之前,将新的鼠标事件添加到线程输入队列。
好吧,不。SendInput
将输入事件放入硬件输入队列中,在该队列中,它们被原始输入线程拾取,并派遣到相应的线程的输入队列。
在
WndProc
中跟踪WM_MOUSEMOVE
是没有选项的,因为用户可以同时发布未模拟的鼠标运动。
正确。但是,您可以安装一个低级鼠标钩,可以在其中识别注入的输入 1 。注射输入具有MSLLHOOKSTRUCT结构的 flags 成员的LLMHF_INJECTED
或LLMHF_LOWER_IL_INJECTED
标志之一。
一种脆性解决方案,使您可以在应用程序的窗口过程的鼠标消息处理程序中识别注入的输入,是通过鼠标input结构传递特定的 dwextrainfo 值。可以通过调用getMessageExtrainfo在消息处理程序中查询此值。但是,这是不可靠的,因为系统也使用这些值。应用程序无法使用的值范围,可以保证不会与系统使用的值相撞。
1 在输入事件从硬件输入队列中脱水后,低级鼠标钩运行。这些事件尚未通过应用程序处理,甚至没有放在各个线程的输入队列中。
相关文章:
- 如何在Qt 4.8中阻止/忽略/丢弃早于特定超时的用户输入事件
- 输入验证将数字放入向量中
- 我觉得我放入结构中的输入代码可以压缩,关于如何在保持代码简短的同时保持数据个性化的任何建议?
- 如何获取C++中的输入并将其"split"到列表中?换句话说,取 N 个输入并放入 N 长度的数组中
- 丢失读入的每一行输入中的最后一个令牌
- 使用重定向命令从 stdin 读入的字符串"<"输入文件未正确附加
- 有没有办法在使用 GLFW 按下按键后只处理一个输入事件?
- C++多按键输入或按键按下/释放事件
- 将输入事件发送到窗口
- 跟踪鼠标输入事件
- 处理自定义QT小部件中的输入事件
- 如何处理 OpenSceneGraph 键盘输入事件中的区分大小写
- GetSave文件名 / IFileSaveDialog - 用户输入的事件/对文件名更改做出反应?
- 计算输入文件中数组中放入的"things"数
- 是否可以使用 select(2) 来监视 SDL 文本输入事件
- 事件处理程序是Embarcadero C++Builder中的重入程序吗
- ifstream 代码不会将输入放入变量中
- gtkoverlay不会通过输入事件
- SIEM通过TCP流式传输,将多条消息输入一个事件中
- 打开通向程序的管道并将其放入标准输入