VS2008のデバッガ内部では、SetWindowsHookExを呼び出すと常に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