我們正在研究一個執行低級別鍵盤鉤子的.Net應用程序。當我們調用在調試器內運行的SetWindowsHookEx時,調用總是失敗。在VS2008調試器中調用SetWindowsHookEx總是返回NULL
從編譯的可執行文件運行時,一切正常。如果我們附加到進程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
我從來沒有見過使用調試器時失敗。其他事情正在發生。郵政編碼,如果你需要幫助。 –