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?

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top