Windows API — регистрация горячей клавиши с комбинацией нескольких клавиш

Так, например, я могу легко зарегистрировать горячую клавишу, которая является комбинацией Shift, Alt (клавиши Mod) и стрелки вверх:

RegisterHotKey(NULL, TOP, MOD_SHIFT | MOD_ALT, VK_UP);

Это работает просто отлично, но мне нужно зарегистрировать горячую клавишу с теми же клавишами, что и выше, плюс еще одну обычную клавишу, такую ​​как стрелка влево, поэтому комбинация будет Shift, Alt, стрелка вверх, стрелка влево.

В функции нет места для другого аргумента, и я попытался выполнить побитовое ИЛИ для клавиш со стрелками вверх и влево, таких как

VK_UP | VK_LEFT

… но это не работает Если кто-то сталкивался с этой проблемой раньше или знает, как мне поступить, пожалуйста, помогите!

2

Решение

Горячие клавиши Windows не поддерживают несколько (не модификаторов) клавиш. Вы не можете поразрядно или кратно VK_* только значения MOD_* значения могут быть объединены.

Если вам отчаянно нужна эта функция, вы должны использовать крючок для клавиатуры низкого уровня и отслеживать ключи самостоятельно. Хукинг влияет на глобальную производительность системы, и его следует избегать, если это возможно.

Если вы решили сделать это, вы должны помнить, что пользователи Windows не привыкли к такому нажатию горячих клавиш, только меню допускают несколько похожий шаблон, но вам не нужно держать Alt модификатор, чтобы те работали. Вы также должны помнить, чтобы проверить свой крючок с залипания и другие специальные возможности …

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]