Перехват и изменение ввода с клавиатуры на уровне очереди сообщений - PullRequest
0 голосов
/ 18 апреля 2020

В последнее время я играл с Windows нативными функциями RegisterHotKey и SendInput, пытаясь изменить Y на Z и т.п. Я знаю, что это не лучший способ изменить ввод с клавиатуры, это просто упражнение. Это хорошо работало для замены 1 ключа на другой единственный ключ. Но потом я попробовал что-то более сложное.

Я хотел прослушать ярлык: Shift + Влево Alt + 2 и выполнить Справа Alt + V . Это не сработало, как ожидалось, потому что я в итоге нажал одновременно левую и правую Alt , поэтому вместо @ была выполнена команда вставки. Проблема в том, что горячие клавиши также генерировали входы, которые смешивались с моим синтезированным вводом.

Могу ли я перехватить и изменить символ, прежде чем ОС отправит его в мое приложение переднего плана на более глубоком уровне?

При написании этого я обнаружил функцию GetMessage . Могу ли я подключить его, чтобы решить эту проблему и изменить структуру MSG?

Я нашел рабочий пример того, как подключить аналогичную функцию в C# здесь , но я не смог изменить структуры, на которые IntPtr указывал. Я должен был создать свою собственную структуру и изменить указатель, чтобы он указывал на нее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...