C++ 跟踪鼠标输入事件

C++ 跟踪鼠标输入事件,c++,winapi,sendinput,C++,Winapi,Sendinput,当前使用SendInput(MOUSEEVENTF\u MOVE)模拟鼠标移动。 SendInput在处理之前向线程输入队列添加新的鼠标事件 是否可以跟踪/检查特定事件是否已实际处理 在WndProc中跟踪WM_MOUSEMOVE是没有选项的,因为用户可以同时发出非模拟鼠标移动 是否可以跟踪/检查特定事件是否已实际处理 一般来说:没有 SendInput在处理之前向线程输入队列添加新的鼠标事件 当然,不是。SendInput将输入事件放入硬件输入队列中,原始输入线程在那里拾取它们,并将它们分派到

当前使用
SendInput(MOUSEEVENTF\u MOVE)
模拟鼠标移动。
SendInput
在处理之前向线程输入队列添加新的鼠标事件

是否可以跟踪/检查特定事件是否已实际处理

WndProc
中跟踪
WM_MOUSEMOVE
是没有选项的,因为用户可以同时发出非模拟鼠标移动

是否可以跟踪/检查特定事件是否已实际处理

一般来说:没有

SendInput
在处理之前向线程输入队列添加新的鼠标事件

当然,不是。
SendInput
将输入事件放入硬件输入队列中,原始输入线程在那里拾取它们,并将它们分派到相应线程的输入队列中

WndProc
中跟踪
WM_MOUSEMOVE
是没有选项的,因为用户可以同时发出非模拟鼠标移动

对。但是,您可以安装一个,在这里您可以识别注入的input1。注入的输入在结构的flags成员中设置了
LLMHF_Injected
LLMHF_LOWER_IL_Injected
标志之一

允许您在应用程序的窗口过程的鼠标消息处理程序中识别注入的输入的一个脆弱的解决方案是通过结构传递特定的dwExtraInfo值。可以通过调用在消息处理程序中查询此值。但这是不可靠的,因为系统也使用这些值。没有一个应用程序可以使用的值范围,这保证不会与系统使用的值冲突


1在输入事件从硬件输入队列中退出队列后,低级鼠标挂钩运行。应用程序还没有处理这些事件,甚至没有将它们放入相应线程的输入队列中