我试图创建一个简单的鼠标挂钩来检测鼠标是否在移动,但是由于某种原因,当我运行该程序时,直到停止该过程,鼠标才完全不起作用。

这是我的代码:

#include <windows.h>

HHOOK g_hMouse;

LRESULT CALLBACK MouseHook(int nCode, WPARAM wParam, LPARAM lParam)
{
    printf("MOUSE EVENT!\n");

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main()
{
    g_hMouse = SetWindowsHookEx(WH_MOUSE_LL, MouseHook, NULL, NULL);

    while (1) {
        Sleep(2);
    }

    return 0;
}

任何帮助,将不胜感激。

谢谢。

最佳答案

WM_MOUSE_LL挂钩要求安装它的线程保持泵送消息。因此,这里需要一个GetMessage / DispatchMessage循环。有关此信息的详细信息,请参见MSDN文档WM_MOUSE_LL:



如果您只是想在尝试/调试时快速尝试一些操作,请将对Sleep()的调用替换为MessageBox(...),这将阻止您的代码,因此您可以进行测试,但它将运行自己的消息循环,因此该挂钩将运行。

09-10 03:29
查看更多