调用SetWindowsHookEx函数里面VS2008调试器总是返回NULL
-
21-09-2019 - |
题
我们正在努力.Net应用程序,做一个低的水平键盘钩子。当我们调用SetWindowsHookEx函数在调试器中运行的呼叫总是失败。
从编译的可执行文件运行一切时工作正常。如果我们重视PROCESSS的中和SetWindowsHookEx被调用一切正常了。
我读的地方(我不记得),该VS已经不低级别的键盘钩子但由于存在CallNextHook功能这不应该是一个问题。
有人知道发生了什么事?
编辑:该代码是相当straigfoward,抛出异常调试器内部而不是外部
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
解决方案
一个猜测可能是VS运行可能会出现不同的反射.vshost.exe过程,但我不能肯定地说。我们使用“Process.GetCurrentProcess()。MainModule`得到模块中通过。也许给一个尝试。
不隶属于 StackOverflow