鼠标挂钩和消息框问题

Mouse hook and messagebox problem

本文关键字:问题 消息 鼠标      更新时间:2023-10-16

我试着钩住鼠标;我的MouseProc是

{
   if(nCode==HC_ACTION)
   {
       if(wParam==WM_LBUTTONDOWN)
       {
          MessageBox(NULL,L"",L"",MB_OK);
          return TRUE;
       }
   }
   return CallNextHookEx(hHook,nCode,wParam,lParam);
}

我不知道为什么它会勾住我的鼠标,然后为一个鼠标左键点击产生至少10个消息框。为什么是错的?此外,我想知道我怎么能钩只是一个特定的进程存在于任务管理器,而不是钩所有现有的窗口?为此,我尝试将SetWindowsHookEx()的第四个参数设置为指定线程的id,但似乎没有任何实际钩住。(虽然hHook返回的是非null)

谢谢。

如何钩住一个特定的进程?鼠标单击是全局的。你的意思是你想要挂钩一个特定的窗口,你可以通过注入的DLL,你的子类说窗口。


至于为什么你的钩子每次点击被调用几次,MSDN是这样说的:

"每当应用程序调用GetMessage或PeekMessage函数并且有鼠标消息要处理时,系统调用此函数。"

对于初学者来说,钩子子程需要存在于DLL中。这是全局钩子的必要条件。你可以把钩子安装在一个线程ID上,这是最好的方法,但如果你需要

,你也可以在钩子中做一些进程ID检查。