RegisterHotKey, fonction (winuser.h)
Définit une touche d’accès rapide à l’échelle du système.
Syntaxe
BOOL RegisterHotKey(
[in, optional] HWND hWnd,
[in] int id,
[in] UINT fsModifiers,
[in] UINT vk
);
Paramètres
[in, optional] hWnd
Type : HWND
Handle de la fenêtre qui recevra WM_HOTKEY messages générés par la touche d’accès rapide. Si ce paramètre a la valeur NULL, WM_HOTKEY messages sont publiés dans la file d’attente des messages du thread appelant et doivent être traités dans la boucle de message.
[in] id
Type : int
Identificateur de la touche d’accès rapide. Si le paramètre hWnd a la valeur NULL, la touche d’accès rapide est associée au thread actuel plutôt qu’à une fenêtre particulière. S’il existe déjà une touche d’accès rapide avec les mêmes paramètres hWnd et id , consultez Remarques pour l’action effectuée.
[in] fsModifiers
Type : UINT
Touches qui doivent être enfoncées en combinaison avec la touche spécifiée par le paramètre vk afin de générer le message WM_HOTKEY . Le paramètre fsModifiers peut être une combinaison des valeurs suivantes.
[in] vk
Type : UINT
Code de clé virtuelle de la touche d’accès rapide. Consultez Codes de clé virtuelle.
Valeur retournée
Type : BOOL
Si la fonction réussit, la valeur de retour est différente de zéro.
Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError.
Remarques
Lorsqu’une touche est enfoncée, le système recherche une correspondance avec toutes les touches d’accès rapide. Après avoir trouvé une correspondance, le système publie le message WM_HOTKEY dans la file d’attente des messages de la fenêtre à laquelle la clé d’accès rapide est associée. Si la touche d’accès rapide n’est pas associée à une fenêtre, le message WM_HOTKEY est publié dans le thread associé à la touche d’accès rapide.
Cette fonction ne peut pas associer une touche d’accès rapide à une fenêtre créée par un autre thread.
RegisterHotKey échoue si les séquences de touches spécifiées pour la touche d’accès rapide ont déjà été inscrites par une autre touche d’accès rapide.
S’il existe déjà une touche d’accès rapide avec les mêmes paramètres hWnd et id , elle est conservée avec la nouvelle clé d’accès rapide. L’application doit appeler explicitement UnregisterHotKey pour annuler l’inscription de l’ancienne clé d’accès rapide.
Windows Server 2003 : S’il existe déjà une touche d’accès rapide avec les mêmes paramètres hWnd et id , elle est remplacée par la nouvelle clé rapide.
La clé F12 étant réservée à l’utilisation par le débogueur à tout moment, elle ne doit pas être inscrite en tant que clé d’accès rapide. Même lorsque vous ne déboguez pas une application, F12 est réservé au cas où un débogueur en mode noyau ou un débogueur juste-à-temps est résident.
Une application doit spécifier une valeur d’ID dans la plage 0x0000 via 0xBFFF. Une DLL partagée doit spécifier une valeur dans la plage 0xC000 via 0xFFFF (plage retournée par la fonction GlobalAddAtom ). Pour éviter les conflits avec les identificateurs de clé d’accès rapide définis par d’autres DLL partagées, une DLL doit utiliser la fonction GlobalAddAtom pour obtenir l’identificateur de clé d’accès rapide.
Exemples
L’exemple suivant montre comment utiliser la fonction RegisterHotKey avec l’indicateur MOD_NOREPEAT . Dans cet exemple, la touche d’accès rapide « ALT+b » est inscrite pour le thread main. Lorsque la touche d’accès rapide est enfoncée, le thread reçoit un message WM_HOTKEY , qui est récupéré dans l’appel GetMessage . Étant donné que cet exemple utilise MOD_ALT avec la valeur MOD_NOREPEAT pour fsModifiers, le thread ne reçoit un autre message WM_HOTKEY que lorsque la touche « b » est relâchée, puis enfoncée à nouveau pendant que la touche « ALT » est enfoncée.
#include "stdafx.h"
int _cdecl _tmain (
int argc,
TCHAR *argv[])
{
if (RegisterHotKey(
NULL,
1,
MOD_ALT | MOD_NOREPEAT,
0x42)) //0x42 is 'b'
{
_tprintf(_T("Hotkey 'ALT+b' registered, using MOD_NOREPEAT flag\n"));
}
MSG msg = {0};
while (GetMessage(&msg, NULL, 0, 0) != 0)
{
if (msg.message == WM_HOTKEY)
{
_tprintf(_T("WM_HOTKEY received\n"));
}
}
return 0;
}
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows Vista [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | winuser.h (inclure Windows.h) |
Bibliothèque | User32.lib |
DLL | User32.dll |
Voir aussi
Conceptuel
Référence
Inscrire la touche d’accès rapide pour l’application actuelle (CSRegisterHotkey)
Inscrire la touche d’accès rapide pour l’application active (CppRegisterHotkey)
Inscrire la touche d’accès rapide pour l’application active (VBRegisterHotkey)
Exemples
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour