KeyboardProc, fonction de rappel
Description
Fonction de rappel définie par l’application ou définie par la bibliothèque utilisée avec la fonction SetWindowsHookExA/SetWindowsHookExW .
Le système appelle cette fonction chaque fois qu’une application appelle la fonction GetMessage ou PeekMessageA/PeekMessageW et qu’il y a un message clavier (WM_KEYUP ou WM_KEYDOWN à traiter.
Le type HOOKPROC définit un pointeur vers cette fonction de rappel. KeyboardProc est un espace réservé pour le nom de fonction défini par l’application ou défini par la bibliothèque.
LRESULT CALLBACK KeyboardProc(
_In_ int code,
_In_ WPARAM wParam,
_In_ LPARAM lParam
);
Paramètres
code [in]
Type : int
Code utilisé par la procédure de hook pour déterminer comment traiter le message.
Si le code est inférieur à zéro, la procédure de hook doit passer le message à la fonction CallNextHookEx sans traitement supplémentaire et doit retourner la valeur retournée par CallNextHookEx.
Ce paramètre peut prendre les valeurs suivantes.
Valeur | Signification |
---|---|
HC_ACTION 0 | Les paramètres wParam et lParam contiennent des informations sur un message de frappe. |
HC_NOREMOVE 3 | Les paramètres wParam et lParam contiennent des informations sur un message de frappe, et le message de frappe n’a pas été supprimé de la file d’attente des messages. (Application appelée fonction PeekMessage , spécifiant l’indicateur PM_NOREMOVE .) |
wParam [in]
Type : WPARAM
Code de clé virtuelle de la clé qui a généré le message de frappe.
lParam [in]
Type : LPARAM
Le nombre de répétitions, le code d’analyse, l’indicateur de clé étendue, le code de contexte, l’indicateur d’état de clé précédent et l’indicateur d’état de transition. Pour plus d’informations sur le paramètre lParam , consultez Indicateurs de message de frappe. Le tableau suivant décrit les bits de cette valeur.
Bits | Description |
---|---|
0-15 | Nombre de répétitions. La valeur est le nombre de fois où la frappe est répétée en raison de la position de l’utilisateur qui maintient la touche enfoncée. |
16-23 | Code d’analyse. La valeur dépend de l’OEM. |
24 | Indique si la touche est une clé étendue, telle qu’une touche de fonction ou une touche sur le pavé numérique. La valeur est 1 si la clé est une clé étendue ; sinon, c’est 0. |
25-28 | Réservé. |
29 | Code de contexte. La valeur est 1 si la touche ALT est arrêtée ; sinon, c’est 0. |
30 | État de touche précédent. La valeur est 1 si la clé est en panne avant l’envoi du message ; elle est 0 si la clé est activée. |
31 | État de transition. La valeur est 0 si la touche est enfoncée et 1 si elle est relâchée. |
Retours
Type : LRESULT
Si le code est inférieur à zéro, la procédure de hook doit retourner la valeur retournée par CallNextHookEx.
Si le code est supérieur ou égal à zéro et que la procédure de hook n’a pas traité le message, il est vivement recommandé d’appeler CallNextHookEx et de retourner la valeur qu’il retourne ; sinon, d’autres applications qui ont installé des hooks WH_KEYBOARD ne recevront pas de notifications de hook et risquent de se comporter incorrectement en conséquence.
Si la procédure de hook a traité le message, elle peut renvoyer une valeur différente de zéro pour empêcher le système de transmettre le message au reste de la chaîne de crochet ou à la procédure de fenêtre cible.
Notes
Une application installe la procédure de hook en spécifiant le type de hook WH_KEYBOARD et un pointeur vers la procédure de hook dans un appel à la fonction SetWindowsHookExW/SetWindowsHookExW .
Ce crochet peut être appelé dans le contexte du thread qui l’a installé. L’appel est effectué en envoyant un message au thread qui a installé le crochet. Par conséquent, le thread qui a installé le crochet doit avoir une boucle de message.