要判断鼠标消息是由真实的物理鼠标还是通过API模拟的鼠标点击触发的,可以通过以下步骤实现:

  1. 使用GetMessageExtraInfo函数获取鼠标消息的额外信息。

  2. 检查鼠标消息的额外信息是否包含标志位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;
}
Hook鼠标消息时如何判断是真实的物理鼠标在点击还是用api模拟鼠标点击的 用C++代码实现

原文地址: https://www.cveoy.top/t/topic/bC03 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录