Utilisation de Num / Caps / Scroll Lock comme modificateur RegisterHotkey dans WinAPI
Question
J'ai la fonction Winapi très connue:
BOOL WINAPI RegisterHotKey(
__in_opt HWND hWnd,
__in int id,
__in UINT fsModifiers,
__in UINT vk
);
Je vois que je ne peux que utiliser le MOD_ALT
, MOD_CONTROL
, MOD_SHIFT
, MOD_WIN
clés, ainsi que MOD_NOREPEAT
.
Je peux donc utiliser ce qui suit pour créer un à l'échelle du système Course de secours pour, disons, le UN clé pour le Shift+A
combinaison:
RegisterHotKey(NULL,1,MOD_SHIFT,0x41);
Maintenant, la question importante:
Comment puis-je utiliser l'état de la serrure / verrouillage de verrouillage / bouchons de num (tout comme MOD_SHIFT
et les autres) comme modificateurs d'un à l'échelle du système L'expression de laket clés que je vais enregistrer, de sorte que la clé enregistrée pour la combinaison de clés se comporte comme une cure de tête basse lorsque toutes ces touches "verrouiller" sont activées, et se comporte également comme une clé normale et non piégée lorsque l'une ou l'autre des touches "verrouillage" sont désactivés?
Je pense qu'une minuterie et une surveillance avec quelque chose comme GetKeyState(VK_NUMLOCK)&0xFFFF
Enregistrer / démêler les raccourcis clavier serait trop bâclé d'une solution, peut-être ralentir ou interférer avec les performances du système, et cela ressemble à un moyen incomplet de procéder car il a à voir avec le comportement clé à l'échelle du système.
De quelles meilleures manières y a-t-il?
La solution
Selon la situation, je vérifierais probablement l'état d'une clé "verrouillage" au début de votre code d'événement.
Sinon, si vous vouliez vraiment que vous pouvez utiliser SetwindowshooKex Pour créer un crochet de clavier pour faire votre surveillance.