Использование GetKeyState для тройных комбинаций клавиш не работает - PullRequest
0 голосов
/ 07 марта 2020

В следующем сценарии, когда я нажимаю клавиши CapsLock и Alt, а затем клавишу J, сообщение «is work» не появляется. Только при одновременном нажатии клавиш CapsLock, Alt и J и немедленном отпускании клавиш появится сообщение «все работает».

CapsLock & J::
if GetKeyState("Alt","p"){
    MsgBox  is work
}
return

Измените клавишу J на ​​K следующим образом:

CapsLock & K::
if GetKeyState("Alt","p"){
    MsgBox  is work
}
return

Это позволяет сначала нажать клавиши CapsLock и Alt, а затем клавишу K, чтобы открыть сообщение «все работает». Я пробовал другие клавиши, такие как A, S, D, F, H и т. Д. Но вы не можете изменить его на G. Одновременно можно нажать только три клавиши и сразу же отпустить нормальный вывод »- работа "

Я не понимаю, почему?

Когда пользовательские комбинации клавиш используют GetKeyState, в каком порядке выполняются клавиши?

1 Ответ

0 голосов
/ 09 марта 2020

Как только вы нажмете горячую клавишу, нажав CapsLock + J или K , она увидит, нажата ли Alt . Так что, если есть какая-либо задержка между нажатием горячей клавиши и нажатием Alt , ваш MsgBox не будет отображаться.

Чтобы заставить его работать каждый раз, начните с удержания ключ, который ищет GetKeyState ( Alt ), а затем удерживайте остальные клавиши в порядке слева направо, как указано в списке. Итак, удерживайте Alt , затем удерживайте CapsLock , затем нажмите J или K .

...