мы работаем над приложением .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