我试图创建一个简单的鼠标挂钩来检测鼠标是否在移动,但是由于某种原因,当我运行该程序时,直到停止该过程,鼠标才完全不起作用。
这是我的代码:
#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(...)
,这将阻止您的代码,因此您可以进行测试,但它将运行自己的消息循环,因此该挂钩将运行。