Frage

arbeiten wir an einer .Net-Anwendung, die eine geringe Tastatur Haken tut. Wenn wir die SetWindowsHookEx läuft innerhalb des Debugger rufen immer der Aufruf fehl.

Wenn Sie von dem kompilierten ausführbaren alles läuft funktioniert gut. Wenn wir an die processs anhängen hat die die SetWindowsHookEx genannt alles funktioniert auch.

Ich habe irgendwo gelesen (ich kann mich nicht erinnern), dass VS bereits tut eine geringe Tastaturhook aber das sollte kein Problem sein, da es die Funktion CallNextHook ist.

Jemand weiß, was passiert?

EDIT:. Der Code ist ziemlich straigfoward, die Ausnahme innerhalb Debugger ausgelöst wird, aber nicht außerhalb

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
War es hilfreich?

Lösung

Eine Vermutung könnte sein, dass VS den .vshost.exe Prozess ausgeführt wird, die unterschiedlich in der Reflexion erscheinen könnte, aber ich kann nicht sicher sagen. Wir verwenden ‚Process.GetCurrentProcess (). MainModule` das Modul zu bekommen passieren. Vielleicht geben, dass ein Versuch.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top