2011-09-02 119 views
-2

我试图钩住鼠标;我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)

谢谢。

回答

0

你怎么能钩住一个特定的过程?鼠标点击是全球性的。你的意思是你想要钩住某个窗口,你可以通过一个注入的DLL来实现这个窗口,在这个窗口中你可以使用subclass said window


至于为什么你的钩子称为每次点击几次,MSDN says this

“系统调用这个函数,每当应用程序调用的GetMessage或的PeekMessage功能,并没有要处理的鼠标消息“。

0

您的挂钩过程需要存在于DLL中供初学者使用。这是全球性的要求。您可以在线程ID上安装钩子,这是最好的方法,但如果您需要

,也可以在钩子上执行一些进程ID检查