우리는 저수준 키보드 후크를 수행하는 .Net 응용 프로그램에서 작업하고 있습니다. 디버거 내부에서 실행되는 SetWindowsHookEx를 호출하면 호출이 항상 실패합니다.VS2008 디버거에서 SetWindowsHookEx를 호출하면 항상 NULL이 반환됩니다.
컴파일 된 실행 파일에서 실행하면 모든 것이 잘 동작합니다. 우리가 프로세스에 연결하면 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
디버거를 사용할 때 실패한 적이 한번도 없었습니다. 다른 일이 벌어지고있다. 도움이 필요하면 우편 번호를 게시하십시오. –