Так, например, я могу легко зарегистрировать горячую клавишу, которая является комбинацией Shift, Alt (клавиши Mod) и стрелки вверх:
RegisterHotKey(NULL, TOP, MOD_SHIFT | MOD_ALT, VK_UP);
Это работает просто отлично, но мне нужно зарегистрировать горячую клавишу с теми же клавишами, что и выше, плюс еще одну обычную клавишу, такую как стрелка влево, поэтому комбинация будет Shift, Alt, стрелка вверх, стрелка влево.
В функции нет места для другого аргумента, и я попытался выполнить побитовое ИЛИ для клавиш со стрелками вверх и влево, таких как
VK_UP | VK_LEFT
… но это не работает Если кто-то сталкивался с этой проблемой раньше или знает, как мне поступить, пожалуйста, помогите!
Горячие клавиши Windows не поддерживают несколько (не модификаторов) клавиш. Вы не можете поразрядно или кратно VK_*
только значения MOD_*
значения могут быть объединены.
Если вам отчаянно нужна эта функция, вы должны использовать крючок для клавиатуры низкого уровня и отслеживать ключи самостоятельно. Хукинг влияет на глобальную производительность системы, и его следует избегать, если это возможно.
Если вы решили сделать это, вы должны помнить, что пользователи Windows не привыкли к такому нажатию горячих клавиш, только меню допускают несколько похожий шаблон, но вам не нужно держать Alt модификатор, чтобы те работали. Вы также должны помнить, чтобы проверить свой крючок с залипания и другие специальные возможности …
Других решений пока нет …