Как включить или отключить символы ключевого слова в программе переменного тока - PullRequest
0 голосов
/ 07 ноября 2019

Я пытаюсь получить контроль над клавиатурой в программе переменного тока. Я использую Windows как ОС, и программа будет выполнена в консольном приложении.

Мой вопрос такой, например, есть ли способ включить блокировку num в программе ac только тогда, когда программазапросить нечисловое значение?

С другой стороны, если программа запрашивает только числовое значение, просто включите только цифровую клавиатуру.

Я хотел бы знать, еслиэто возможно, и какие шаги я должен следовать.

1 Ответ

0 голосов
/ 07 ноября 2019

У меня вопрос, есть ли такая вещь, как, например, способ включить блокировку num в программе переменного тока только тогда, когда программа запрашивает нечисловое значение?

Да, этовозможно с функциями SetKeyboardState , keybd_event или SendInput в Windows. Последний предпочтительнее, чем keybd_event. Это простой способ эмулировать ввод с клавиатуры.

С другой стороны, если программа запрашивает только числовое значение, просто включите только цифровую клавиатуру.

Это становится более сложным. Это возможно в пользовательском режиме, но это взломано. Правильный способ сделать это - создать драйвер фильтра клавиатуры с помощью WDK . Но если у вас нет четкого понимания API драйвера и модели ядра, я бы также не рекомендовал этот маршрут. Способ сделать это в режиме пользователя - создать фильтр локальной клавиатуры, используя функцию SetWindowsHookEx с WH_KEYBOARD в качестве идентификатора. Внутри обратного вызова LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) вы проверяете скан-код нажатой клавиши, и если он не числовой или какое-либо условие, которое вы предпочитаете, вы просто возвращаете CallNextHook, который переходит к следующей процедуре в цепочке ловушек, по существу игнорируя введенные вами данные. при условии.

...