Funzione di callback KeyboardProc

Descrizione

Funzione di callback definita dall'applicazione o definita dalla libreria usata con la funzione SetWindowsHookExA/SetWindowsHookExW .

Il sistema chiama questa funzione ogni volta che un'applicazione chiama la funzione GetMessage o PeekMessageA/PeekMessageW ed è presente un messaggio di tastiera (WM_KEYUP o WM_KEYDOWN da elaborare.

Il tipo HOOKPROC definisce un puntatore a questa funzione di callback. KeyboardProc è un segnaposto per il nome della funzione definita dall'applicazione o definita dalla libreria.

LRESULT CALLBACK KeyboardProc(
  _In_ int    code,
  _In_ WPARAM wParam,
  _In_ LPARAM lParam
);

Parametri

codice [in]

Tipo: int

Codice usato dalla routine hook per determinare 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 I parametri wParam e lParam contengono informazioni su un messaggio di sequenza di tasti.
HC_NOREMOVE 3 I parametri wParam e lParam contengono informazioni su un messaggio di sequenza di tasti e il messaggio di sequenza di tasti non è stato rimosso dalla coda dei messaggi. Un'applicazione denominata funzione PeekMessage , specificando il flag PM_NOREMOVE .

wParam [in]

Tipo: WPARAM

Codice della chiave virtuale della chiave che ha generato il messaggio di sequenza di tasti.

lParam [in]

Tipo: LPARAM

Numero di ripetizioni, codice di analisi, flag di chiave estesa, codice di contesto, flag di stato chiave precedente e flag di stato di transizione. Per altre informazioni sul parametro lParam , vedere Keystroke Message Flags.For more information about The lParam parameter, see Keystroke Message Flags. Nella tabella seguente vengono descritti i bit di questo valore.

BITS Descrizione
0-15 Numero di ripetizioni. Il valore è il numero di volte in cui la sequenza di tasti viene ripetuta in seguito al mantenimento della chiave da parte dell'utente.
16-23 Codice di analisi. Il valore dipende dall'OEM.
24 Indica se il tasto è un tasto esteso, ad esempio un tasto funzione o un tasto sul tastierino numerico. Il valore è 1 se la chiave è una chiave estesa; in caso contrario, è 0.
25-28 Riservato.
29 Codice di contesto. Il valore è 1 se il tasto ALT è inattivo; in caso contrario, è 0.
30 Stato della chiave precedente. Il valore è 1 se la chiave è inattiva prima dell'invio del messaggio; è 0 se la chiave è in alto.
31 Stato di transizione. Il valore è 0 se il tasto viene premuto e 1 se viene rilasciato.

Restituisce

Tipo: LRESULT

Se il codice è minore di zero, la routine hook deve restituire il valore restituito da CallNextHookEx.

Se il codice è maggiore o uguale a zero e la routine hook non ha elaborato il messaggio, è consigliabile chiamare CallNextHookEx e restituire il valore restituito; in caso contrario, altre applicazioni che hanno installato WH_KEYBOARD hook non riceveranno notifiche hook e potrebbero comportarsi in modo non corretto di conseguenza.

Se la routine hook ha elaborato il messaggio, può restituire un valore diverso da zero per impedire al sistema di passare il messaggio al resto della catena di hook o alla routine della finestra di destinazione.

Commenti

Un'applicazione installa la routine hook specificando il tipo di hook WH_KEYBOARD e un puntatore alla routine hook in una chiamata alla funzione SetWindowsHookExA/SetWindowsHookExW .

Questo hook può essere chiamato nel contesto del thread che lo ha installato. La chiamata viene effettuata inviando un messaggio al thread che ha installato l'hook. Pertanto, il thread che ha installato l'hook deve avere un ciclo di messaggi.

Vedi anche