Hook鼠标消息时如何判断是真实的物理鼠标在点击还是用api模拟鼠标点击的 用C++代码实现
要判断鼠标消息是由真实的物理鼠标还是通过API模拟的鼠标点击触发的,可以通过以下步骤实现:
-
使用GetMessageExtraInfo函数获取鼠标消息的额外信息。
-
检查鼠标消息的额外信息是否包含标志位MI_WP_SIGNATURE,如果包含则表示是真实的物理鼠标点击触发的消息;如果不包含则表示是通过API模拟的鼠标点击触发的消息。
下面是一个简单的C++代码示例,可以在Windows操作系统上实现上述逻辑:
#include <Windows.h>
LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0 && wParam == WM_LBUTTONDOWN)
{
DWORD_PTR dwExtraInfo = GetMessageExtraInfo();
if (dwExtraInfo & MI_WP_SIGNATURE)
{
// 真实的物理鼠标点击触发的消息
}
else
{
// 通过API模拟的鼠标点击触发的消息
}
}
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
int main()
{
HHOOK hHook = SetWindowsHookEx(WH_MOUSE_LL, MouseProc, NULL, 0);
MSG msg;
while (GetMessage(&msg, NULL, 0, 0))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnhookWindowsHookEx(hHook);
return 0;
}
原文地址: https://www.cveoy.top/t/topic/bC03 著作权归作者所有。请勿转载和采集!