鼠标钩子和消息框问题
问题描述:
我试图钩住鼠标;我MouseProc是鼠标钩子和消息框问题
{
if(nCode==HC_ACTION)
{
if(wParam==WM_LBUTTONDOWN)
{
MessageBox(NULL,L"",L"",MB_OK);
return TRUE;
}
}
return CallNextHookEx(hHook,nCode,wParam,lParam);
}
我不知道为什么它gobal钩我的鼠标,然后在租赁10消息框生成只是一个leftmouse按钮的点击。为什么它错了?此外,我想知道如何钩住taskmanager中存在的特定进程而不是钩住所有现有的窗口?为此,我尝试将SetWindowsHookEx()的第四个参数设置为指定线程的id,但它似乎没有实际挂钩。 (虽然hHook返回的是非NUll)
谢谢。
答
你怎么能钩住一个特定的过程?鼠标点击是全球性的。你的意思是你想要钩住某个窗口,你可以通过一个注入的DLL来实现这个窗口,在这个窗口中你可以使用subclass said window。
至于为什么你的钩子称为每次点击几次,MSDN says this:
“系统调用这个函数,每当应用程序调用的GetMessage或的PeekMessage功能,并没有要处理的鼠标消息“。
答
您的挂钩过程需要存在于DLL中供初学者使用。这是全球性的要求。您可以在线程ID上安装钩子,这是最好的方法,但如果您需要
,也可以在钩子上执行一些进程ID检查