Pregunta

estamos trabajando en una aplicación .NET que hace un gancho bajo nivel de teclado. Cuando llamamos a la SetWindowsHookEx se ejecuta dentro del depurador de la llamada siempre fallan.

Cuando se ejecuta desde el ejecutable compilado todo funciona bien. Si le damos a la processs la SetWindowsHookEx la que se ha llamado todo funciona también.

en algún lugar

He leído (no recuerdo) que VS ya hace un gancho de teclado de bajo nivel, pero esto no debería ser un problema, ya que es la función CallNextHook.

Alguien sabe lo que está pasando?

EDIT:. El código es bastante straigfoward, la excepción se produce en el interior del depurador, pero no fuera

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
¿Fue útil?

Solución

Una conjetura podría ser que VS se está ejecutando el proceso .vshost.exe que podrían aparecer de forma diferente en la reflexión, pero no puedo decir con seguridad. Utilizamos 'Process.GetCurrentProcess (). MainModule` para obtener el módulo de pasar. Tal vez que dan una oportunidad.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top