Función de devolución de llamada KeyboardProc
Descripción
Función de devolución de llamada definida por la aplicación o definida por la biblioteca que se usa con la función SetWindowsHookExA/SetWindowsHookExW .
El sistema llama a esta función cada vez que una aplicación llama a la función GetMessage o PeekMessageA/PeekMessageW y hay un mensaje de teclado (WM_KEYUP o WM_KEYDOWN que se va a procesar.
El tipo HOOKPROC define un puntero a esta función de devolución de llamada. KeyboardProc es un marcador de posición para el nombre de función definido por la aplicación o la biblioteca.
LRESULT CALLBACK KeyboardProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
Parámetros
code [in]
Tipo: int
Código que usa el procedimiento de enlace para determinar cómo procesar el mensaje.
Si el código es menor que cero, el procedimiento de enlace debe pasar el mensaje a la función CallNextHookEx sin procesamiento adicional y debe devolver el valor devuelto por CallNextHookEx.
Este parámetro puede ser uno de los valores siguientes.
Valor | Significado |
---|---|
HC_ACTION 0 | Los parámetros wParam y lParam contienen información sobre un mensaje de pulsación de tecla. |
HC_NOREMOVE 3 | Los parámetros wParam y lParam contienen información sobre un mensaje de pulsación de tecla y el mensaje de pulsación de tecla no se ha quitado de la cola de mensajes. (Una aplicación denominada función PeekMessage , especificando la marca PM_NOREMOVE ). |
wParam [in]
Tipo: WPARAM
Código de clave virtual de la clave que generó el mensaje de pulsación de tecla.
lParam [in]
Tipo: LPARAM
Recuento de repeticiones, código de examen, marca de clave extendida, código de contexto, marca de estado de clave anterior y marca de estado de transición. Para obtener más información sobre el parámetro lParam , vea Marcas de mensaje de pulsación de teclas. En la tabla siguiente se describen los bits de este valor.
Bits | Descripción |
---|---|
0-15 | Recuento de repeticiones. El valor es el número de veces que la pulsación de tecla se repite como resultado de que el usuario mantiene presionada la tecla. |
16-23 | Código de tecla. El valor depende del OEM. |
24 | Indica si la clave es una clave extendida, como una clave de función o una tecla en el teclado numérico. El valor es 1 si la clave es una clave extendida; de lo contrario, es 0. |
25-28 | Reservado. |
29 | Código de contexto. El valor es 1 si la tecla ALT está inactiva; de lo contrario, es 0. |
30 | Estado anterior de la tecla. El valor es 1 si la clave está inactiva antes de enviar el mensaje; es 0 si la tecla está arriba. |
31 | Estado de transición. El valor es 0 si se presiona la tecla y 1 si se libera. |
Devoluciones
Tipo: LRESULT
Si el código es menor que cero, el procedimiento de enlace debe devolver el valor devuelto por CallNextHookEx.
Si el código es mayor o igual que cero y el procedimiento de enlace no procesó el mensaje, se recomienda encarecidamente llamar a CallNextHookEx y devolver el valor que devuelve; de lo contrario, otras aplicaciones que han instalado WH_KEYBOARD enlaces no recibirán notificaciones de enlace y pueden comportarse incorrectamente como resultado.
Si el procedimiento de enlace procesó el mensaje, puede devolver un valor distinto de cero para evitar que el sistema pase el mensaje al resto de la cadena de enlace o al procedimiento de ventana de destino.
Comentarios
Una aplicación instala el procedimiento de enlace especificando el tipo de enlace WH_KEYBOARD y un puntero al procedimiento de enlace en una llamada a la función SetWindowsHookExA/SetWindowsHookExW .
Se puede llamar a este enlace en el contexto del subproceso que lo instaló. La llamada se realiza enviando un mensaje al subproceso que instaló el enlace. Por lo tanto, el subproceso que instaló el enlace debe tener un bucle de mensajes.