Funzione JournalRecordProc
Descrizione
Funzione di callback definita dall'applicazione o definita dalla libreria usata con la funzione SetWindowsHookEx . La funzione registra i messaggi che il sistema rimuove dalla coda dei messaggi di sistema. Successivamente, un'applicazione può usare una routine hook JournalPlaybackProc per riprodurre i messaggi.
Il tipo HOOKPROC definisce un puntatore a questa funzione di callback. JournalRecordProc è un segnaposto per il nome di funzione definito dall'applicazione o definito dalla libreria.
LRESULT CALLBACK JournalRecordProc(
_In_ int code,
WPARAM wParam,
_In_ LPARAM lParam
);
Parametri
codice [in]
Tipo: int
Specifica come elaborare il messaggio. Se il codice è minore di zero, la routine hook deve passare il messaggio alla funzione CallNextHookEx senza ulteriori elaborazioni e restituire il valore restituito da CallNextHookEx. Questo parametro può avere uno dei valori seguenti.
Valore | Significato |
---|---|
HC_ACTION 0 | Il parametro lParam è un puntatore a una struttura EVENTMSG contenente informazioni su un messaggio rimosso dalla coda di sistema. La routine hook deve registrare il contenuto della struttura copiandoli in un buffer o in un file. |
HC_SYSMODALOFF 5 | Una finestra di dialogo modale di sistema è stata eliminata definitivamente. La procedura hook deve riprendere la registrazione. |
HC_SYSMODALON 4 | Viene visualizzata una finestra di dialogo modale di sistema. Finché la finestra di dialogo non viene eliminata definitivamente, la procedura hook deve interrompere la registrazione. |
wParam
Tipo: WPARAM
Questo parametro non viene usato.
lParam [in]
Tipo: LPARAM
Puntatore a una struttura EVENTMSG contenente il messaggio da registrare.
Restituisce
Tipo: LRESULT
Il valore restituito viene ignorato.
Commenti
Una routine hook JournalRecordProc deve copiare ma non modificare i messaggi. Dopo che la routine hook restituisce il controllo al sistema, il messaggio continua a essere elaborato.
Installare la routine hook JournalRecordProc specificando il tipo di WH_JOURNALRECORD e un puntatore alla routine hook in una chiamata alla funzione SetWindowsHookEx .
Una routine hook JournalRecordProc non deve essere usata in una libreria di collegamento dinamico. Una routine hook JournalRecordProc può risiedere nell'applicazione stessa.
A differenza della maggior parte delle altre procedure hook globali, le procedure hook JournalRecordProc e JournalPlaybackProc vengono sempre chiamate nel contesto del thread che imposta l'hook.
Un'applicazione che ha installato una routine hook JournalRecordProc deve watch per il codice del tasto virtuale VK_CANCEL (implementato come combinazione di tasti CTRL+INTERR nella maggior parte delle tastiere). Questo codice di chiave virtuale deve essere interpretato dall'applicazione come segnale che l'utente vuole interrompere la registrazione del journal. L'applicazione deve rispondere terminando la sequenza di registrazione e rimuovendo la routine hook JournalRecordProc . La rimozione è importante. Impedisce a un'applicazione di inserimento nel journal di bloccare il sistema appeso all'interno di una procedura hook.
Questo ruolo come segnale per interrompere la registrazione journl significa che non è possibile registrare una combinazione di tasti CTRL+INTERR. Poiché la combinazione di tasti CTRL+C non ha alcun ruolo come un segnale di inserimento nel journal, può essere registrata. Esistono due altre combinazioni di tasti che non possono essere registrate: CTRL+ESC e CTRL+ALT+CANC. Queste due combinazioni chiave causano l'arresto di tutte le attività di inserimento nel journal (registrazione o riproduzione), la rimozione di tutti gli hook di inserimento nel journal e la pubblicazione di un messaggio di WM_CANCELJOURNAL all'applicazione di inserimento nel journal.