我们正在开发一个执行低级键盘挂钩的.Net 应用程序。当我们调用在调试器中运行的 SetWindowsHookEx 时,调用总是失败。
从已编译的可执行文件运行时,一切正常。如果我们附加到已调用 SetWindowsHookEx 的进程,则一切正常。
我在某处(我不记得)读到 VS 已经做了一个低级键盘钩子,但这应该不是问题,因为有 CallNextHook 函数。
有人知道发生了什么吗?
编辑:代码非常简单,异常是在调试器内部引发的,而不是在外部引发的。
Public Sub New()
m_callback = New NativeMethods.KeyboardHookDelegate(AddressOf KeyboardCallback)
End Sub
Public Sub Start()
m_handle = NativeMethods.SetWindowsHookEx(NativeMethods.HookType.WH_KEYBOARD_LL, m_callback, Marshal.GetHINSTANCE(Reflection.Assembly.GetExecutingAssembly().GetModules()(0)).ToInt32, 0)
If m_handle = 0 Then
Throw New Exception()
End If
End Sub