SetWindowsHookEx无法正常工作

问题描述:

我试图做一个全球mousehotkey与SetWindowsHookEx()因此,当我按下鼠标右键它执行一些代码。我的问题是,当回调函数被执行时,它会给我一个奇怪的右键按钮,每次代码执行时都会改变它。SetWindowsHookEx无法正常工作

private static IntPtr ButtonHookCallback(int nCode, IntPtr wParam, IntPtr lParam) 
    { 

     int button = Marshal.ReadInt32(lParam); 
     if (nCode >= 0 && wParam == (IntPtr)WM_RBUTTONDOWN) 
     { 
      if (button == 0x02) 
      { 
       _m.rtbLog.AppendText("Test"); 
      } 

     } 

     return CallNextHookEx(MainWindow._hookId, nCode, wParam, lParam); 
    } 

当我读到的lParam它给了我像大约600种变化,每次的代码获取即使它应该是0X2执行的数量。 我该如何解决这个问题:P。

编辑:当我用钥匙

+0

按照[文档】(https://msdn.microsoft.com/en-us/library /windows/desktop/ms644986(v=vs.85).aspx)'lParam'包含一个指向'MSLLHOOKSTRUCT'结构的指针。 [此结构](https://msdn.microsoft.com/en-us/library/windows/desktop/ms644970(v = vs.85).aspx)基本上包含鼠标光标的x和y坐标。为什么它应该是'0x2'? – haindl

+0

这是什么样的钩子?键盘或鼠标挂钩?你如何安装它? –

0x02做它完美意味着WM_MOUSEMOVE,它应该来自wParamlParamlParam意味着MOUSEHOOKSTRUCT,它将经常更改为包含x- and y-coordinates of the cursor。只是指[MouseProc callback function][1][MOUSEHOOKSTRUCT structure][2]