Función JournalRecordProc
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 SetWindowsHookEx . La función registra los mensajes que el sistema quita de la cola de mensajes del sistema. Más adelante, una aplicación puede usar un procedimiento de enlace JournalPlaybackProc para reproducir los mensajes.
El tipo HOOKPROC define un puntero a esta función de devolución de llamada. JournalRecordProc es un marcador de posición para el nombre de función definido por la aplicación o la biblioteca.
LRESULT CALLBACK JournalRecordProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
Parámetros
code [in]
Tipo: int
Especifica 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 | El parámetro lParam es un puntero a una estructura EVENTMSG que contiene información sobre un mensaje quitado de la cola del sistema. El procedimiento de enlace debe registrar el contenido de la estructura copiandolos en un búfer o archivo. |
HC_SYSMODALOFF 5 | Se ha destruido un cuadro de diálogo modal del sistema. El procedimiento de enlace debe reanudar la grabación. |
HC_SYSMODALON 4 | Se muestra un cuadro de diálogo modal del sistema. Hasta que se destruya el cuadro de diálogo, el procedimiento de enlace debe detener la grabación. |
wParam
Tipo: WPARAM
Este parámetro no se utiliza.
lParam [in]
Tipo: LPARAM
Puntero a una estructura EVENTMSG que contiene el mensaje que se va a grabar.
Devoluciones
Tipo: LRESULT
Se omite el valor devuelto.
Observaciones
Un procedimiento de enlace JournalRecordProc debe copiar pero no modificar los mensajes. Después de que el procedimiento de enlace devuelva el control al sistema, el mensaje continúa procesándose.
Instale el procedimiento de enlace JournalRecordProc especificando el tipo WH_JOURNALRECORD y un puntero al procedimiento de enlace en una llamada a la función SetWindowsHookEx .
No es necesario que un procedimiento de enlace JournalRecordProc resida en una biblioteca de vínculos dinámicos. Un procedimiento de enlace JournalRecordProc puede residir en la propia aplicación.
A diferencia de la mayoría de los otros procedimientos de enlace global, los procedimientos de enlace JournalRecordProc y JournalPlaybackProc siempre se llaman en el contexto del subproceso que establece el enlace.
Una aplicación que haya instalado un procedimiento de enlace JournalRecordProc debe watch para el código de clave virtual de VK_CANCEL (que se implementa como la combinación de teclas CTRL+BREAK en la mayoría de los teclados). La aplicación debe interpretar este código de clave virtual como una señal de que el usuario desea detener la grabación del diario. La aplicación debe responder finalizando la secuencia de grabación y quitando el procedimiento de enlace JournalRecordProc . La eliminación es importante. Impide que una aplicación de registro en diario bloquee el sistema colgando dentro de un procedimiento de enlace.
Este rol como señal para detener la grabación de suspensión significa que no se puede grabar una combinación de teclas CTRL+BREAK. Puesto que la combinación de teclas CTRL+C no tiene ningún rol como una señal de registro en diario, se puede grabar. Hay otras dos combinaciones de teclas que no se pueden registrar: CTRL+ESC y CTRL+ALT+SUPR. Estas dos combinaciones clave hacen que el sistema detenga todas las actividades de registro en diario (grabación o reproducción), quite todos los enlaces de registro en diario y publique un mensaje de WM_CANCELJOURNAL en la aplicación de registro en diario.