Domanda

stiamo lavorando su un'applicazione .NET che fa un gancio basso della tastiera di livello. Quando chiamiamo il SetWindowsHookEx in esecuzione all'interno del debugger la chiamata sempre sicuro.

Quando si esegue dal tutto eseguibile compilato funziona bene. Se ci attacchiamo al processs il il SetWindowsHookEx è stato chiamato tutto funziona troppo.

Ho letto da qualche parte (non ricordo) che VS fa già un hook di tastiera di basso livello, ma questo non dovrebbe essere un problema in quanto v'è la funzione di CallNextHook.

Qualcuno sa che cosa sta succedendo?

EDIT:. Il codice è abbastanza straigfoward, l'eccezione viene generata all'interno del debugger, ma non al di fuori

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
È stato utile?

Soluzione

Un'ipotesi potrebbe essere che VS è in esecuzione il processo .vshost.exe che possono apparire in modo diverso in riflessione, ma non posso dirlo con certezza. Usiamo 'Process.GetCurrentProcess (). MainModule` per scaricare il modulo di passare. Forse dare che una prova.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top