低レベルのキーボード フックを行う .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