El gancho de teclado global SetWindowsHookEx no captura todas las pulsaciones de teclas

Estoy escribiendo código que es parte de un sistema de automatización. Quería agregar un gancho para el teclado para terminar la prueba prematuramente, y lo hice usando SetWindowHookEx.

Mi código se parece mucho a esto:http://support.microsoft.com/kb/318804

Aquí está mi llamada a SetWindowsHookEx:

hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardHookProcedure, GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);

Ahora, cuando ejecuto mi automatización, las pulsaciones de tecla desde el sistema de automatización (desde SendKeys) activan el método de enganche del teclado, pero cuando presiono el teclado manualmente no se activa.

Puedo compartir más código si eso ayuda, pero es parte de un sistema mucho más grande. Estoy bastante seguro de que:

Mi SetWindowsHookEx no es correcto, oAlgo en el sistema de automatización es eludir el gancho de mi teclado (aunque no sé cómo decirlo).

He escrito una aplicación de prueba que utiliza el código de muestra de microsoft.com para determinar que mi enfoque tiene mérito (es decir, funciona), pero tengo problemas para integrarlo con el sistema de automatización.

Cualquier pensamiento sobre cómo determinar dónde van las cosas mal sería muy apreciado.

Edición: No hay otras instancias de SetWindowsHookEx en el arnés de automatización. No estoy demasiado claro los matices de los ganchos de teclado global w.r.t. Los hilos y el escritorio. Si agrego un gancho de teclado global, ¿debería importar desde dónde se agregó?

Respuestas a la pregunta(2)

Su respuesta a la pregunta