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。
编辑:当我用钥匙
答
0x02
做它完美意味着WM_MOUSEMOVE
,它应该来自wParam
而lParam
。 lParam
意味着MOUSEHOOKSTRUCT
,它将经常更改为包含x- and y-coordinates of the cursor
。只是指[MouseProc callback function][1]
和[MOUSEHOOKSTRUCT structure][2]
按照[文档】(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
这是什么样的钩子?键盘或鼠标挂钩?你如何安装它? –