Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Détermine si une touche est vers le haut ou le bas au moment où la fonction est appelée, et si la touche a été enfoncée après un appel précédent à GetAsyncKeyState.
Syntaxe
SHORT GetAsyncKeyState(
[in] int vKey
);
Paramètres
[in] vKey
Type : int
Code de clé virtuelle. Pour plus d’informations, consultez Codes de clé virtuelle.
Vous pouvez utiliser des constantes de gauche et de droite pour spécifier certaines clés. Pour plus d’informations, consultez la section Remarques.
Valeur retournée
Type : SHORT
Si la fonction réussit, la valeur de retour spécifie si la touche a été enfoncée depuis le dernier appel à GetAsyncKeyState et si la touche est actuellement vers le haut ou le bas. Si le bit le plus significatif est défini, la clé est en panne et si le bit le moins significatif est défini, la touche a été enfoncée après l’appel précédent à GetAsyncKeyState. Toutefois, vous ne devez pas vous appuyer sur ce dernier comportement ; pour plus d’informations, consultez les remarques.
La valeur de retour est égale à zéro pour les cas suivants :
- Le bureau actuel n’est pas le bureau actif
- Le thread de premier plan appartient à un autre processus et le bureau n’autorise pas le hook ou l’enregistrement journal.
Remarques
La fonction GetAsyncKeyState fonctionne avec des boutons de souris. Toutefois, il vérifie l’état des boutons physiques de la souris, et non sur les boutons logiques de la souris auxquels les boutons physiques sont mappés. Par exemple, l’appel GetAsyncKeyState(VK_LBUTTON) retourne toujours l’état du bouton de la souris physique gauche, qu’il soit mappé au bouton logique gauche ou droit de la souris. Vous pouvez déterminer le mappage actuel du système des boutons de souris physiques aux boutons logiques de la souris en appelant GetSystemMetrics(SM_SWAPBUTTON).
qui retourne TRUE si les boutons de la souris ont été échangés.
Bien que le bit le moins significatif de la valeur de retour indique si la touche a été enfoncée depuis la dernière requête, en raison de la nature multitâche prédéfinie de Windows, une autre application peut appeler GetAsyncKeyState et recevoir le bit « récemment appuyé » au lieu de votre application. Le comportement du bit le moins significatif de la valeur de retour est conservé strictement pour la compatibilité avec les applications Windows 16 bits (qui ne sont pas préemptives) et ne doit pas être utilisé.
Vous pouvez utiliser les constantes de code de clé virtuelle VK_SHIFT, VK_CONTROL et VK_MENU comme valeurs pour le paramètre vKey . Cela donne l’état des touches Maj, Ctrl ou Alt sans distinguer les touches gauche et droite.
Vous pouvez utiliser les constantes de code de clé virtuelle suivantes comme valeurs pour la clé virtuelle pour faire la distinction entre les instances de gauche et de droite de ces clés.
| Code | Meaning |
|---|---|
| VK_LSHIFT | Touche maj gauche. |
| VK_RSHIFT | Touche maj droite. |
| VK_LCONTROL | Touche de contrôle gauche. |
| VK_RCONTROL | Touche de contrôle de droite. |
| VK_LMENU | Touche de menu de gauche. |
| VK_RMENU | Touche de menu droit. |
Ces constantes de gauche et de droite sont disponibles uniquement lorsque vous appelez les fonctions GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyState et MapVirtualKey .
Example
while (GetMessage(&msg, nullptr, 0, 0))
{
if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg))
{
TranslateMessage(&msg);
DispatchMessage(&msg);
}
switch (msg.message)
{
case WM_KEYDOWN:
if ((GetAsyncKeyState(VK_ESCAPE) & 0x01) && bRunning)
{
Stop();
}
break;
}
}
Exemple de exemples Windows Classic sur GitHub.
Spécifications
| Requirement | Valeur |
|---|---|
| Client minimum requis | Windows 2000 Professionnel [applications de bureau uniquement] |
| Serveur minimal pris en charge | Windows 2000 Server [applications de bureau uniquement] |
| plateforme cible | Fenêtres |
| Header | winuser.h (include Windows.h) |
| Library | User32.lib |
| DLL | User32.dll |