2012-05-23 23 views

Respuesta

25

Meh, no se centre demasiado en el término, no aclara nada. Hay una gran diferencia entre los dos. WH_KEYBOARD_LL instala un enlace que requiere que la devolución de llamada se implemente en su propio programa. Y debe bombear un bucle de mensaje para que Windows pueda realizar la devolución de llamada cuando esté a punto de enviar un mensaje de teclado. Lo que hace que sea realmente fácil ponerse en marcha.

WH_KEYBOARD funciona de manera muy diferente, requiere una DLL que se puede inyectar con seguridad en los procesos enganchados. Lo que hace que sea notoriamente difícil ponerse en marcha, inyectar archivos DLL sin afectar un proceso no es fácil. Particularmente en un sistema operativo de 64 bits. Tampoco se ocupa de la comunicación entre procesos que pueda necesitar si algún otro proceso necesita saber sobre la pulsación de tecla. Como un registrador de teclas.

La ventaja de WH_KEYBOARD es que tiene acceso al estado del teclado. Que es una propiedad por proceso en Windows. Indique cómo el diseño del teclado activo y el estado del modificador y las teclas muertas importan mucho cuando quiere usar el gancho para traducir las teclas virtuales a las teclas de escritura usted mismo. No se puede llamar de manera confiable a ToUnicodeEx() desde un proceso externo.

No puedes columpiar a un gato sin toparte con el código de ejemplo, google te dará un montón. Así que asegúrese de usar algo conocido para el trabajo si nunca antes ha escrito un anzuelo de este tipo, evitará mucho dolor.

+0

_' "... instala un gancho que requiere que se implemente la devolución de llamada ..." '_. ¿Qué quieres decir con _callback_? –

+1

Bastante seguro de que ya se te explicó en una pregunta anterior. Si todavía es tan misterioso, considere dejar este proyecto en el estante hasta que haya tenido tiempo de aprender más sobre winapi básico y la programación en general. Conseguir ganchos no es trivial. –

+0

déjame verificar, _ "significa llamar al siguiente método en la cadena de enlace"? _ –