Quelle est la méthode recommandée pour détecter qu’une touche de contrôle + a été pressée?

Disons que je souhaite attraper la combinaison Control-A .

Ceci est mon code jusqu’ici, dans une fonction Windows Hook:

KBDLLHOOKSTRUCT kbdStruct = *((KBDLLHOOKSTRUCT *)lParam); if (kbdStruct.vkCode == 0x41) { MessageBox(NULL, TEXT("A has been pressed!"), TEXT("key pressed"), MB_ICONINFORMATION); } 

Puisque les utilisateurs appuient d’abord sur la touche Ctrl (et la laissent enfoncée pendant plusieurs millisecondes), mon Keyboard Hook ci-dessus doit d’abord ignorer cette clé, est-ce exact? Je suppose que je dois être à l’affût de la lettre “A” et dès qu’il est détecté, je devrais vérifier l’état du modificateur, touche Contrôle?

Peut-être y a-t-il un masque ET pour cela?

Addition: Disons que j’ai besoin d’un Control-B ou Control-C ou Control-D jusqu’à Control-Z. Peut-être que ce dont j’ai besoin est Alt-A, ou Alt-B, ou Alt-C … jusqu’à Alt-Z

Comment puis-je regrouper les 2 correspondances partielles? (la touche alphabétique plus la touche de modification).

Voilà:

 LRESULT __stdcall Process_Ctl_A(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode >= 0 && wParam == WM_KEYDOWN) { KBDLLHOOKSTRUCT kbdStruct = *((KBDLLHOOKSTRUCT *)lParam); if (kbdStruct.vkCode == 0x41 && GetAsyncKeyState(VK_CONTROL) & 0x8000) { MessageBox(NULL, TEXT("Control-A combination has been pressed!"), TEXT("key pressed"), MB_ICONINFORMATION); } } return CallNextHookEx(hook, nCode, wParam, lParam); } 

S’il vous plaît, pas de DLL de hook de clavier – qui injecte du code dans des processus qui ne sont pas conçus pour gérer les hooks de clavier et crée une instabilité du système.

Essayez-vous d’attraper “CTRL + A” parce que vous essayez d’implémenter quelque chose comme “Sélectionner tout” dans votre application. Si tel est le cas, vous avez juste besoin d’un accélérateur de clavier pour intercepter cette séquence de clavier lorsque l’application a le focus.

Mais si vous devez intercepter Vous devriez essayer de regarder l’API RegisterHotKey . Je pense que cela devrait répondre à vos besoins si vous avez besoin d’un crochet global. Mais soyez prévenus – je ne suis pas sûr de ce qui se passe si vous enregistrez CTRL + A et que l’application utilise cette combinaison de touches pour quelque chose comme “sélectionner tout”.