В последнее время я играл с Windows нативными функциями RegisterHotKey
и SendInput
, пытаясь изменить Y
на Z
и т.п. Я знаю, что это не лучший способ изменить ввод с клавиатуры, это просто упражнение. Это хорошо работало для замены 1 ключа на другой единственный ключ. Но потом я попробовал что-то более сложное.
Я хотел прослушать ярлык: Shift + Влево Alt + 2 и выполнить Справа Alt + V . Это не сработало, как ожидалось, потому что я в итоге нажал одновременно левую и правую Alt , поэтому вместо @
была выполнена команда вставки. Проблема в том, что горячие клавиши также генерировали входы, которые смешивались с моим синтезированным вводом.
Могу ли я перехватить и изменить символ, прежде чем ОС отправит его в мое приложение переднего плана на более глубоком уровне?
При написании этого я обнаружил функцию GetMessage . Могу ли я подключить его, чтобы решить эту проблему и изменить структуру MSG?
Я нашел рабочий пример того, как подключить аналогичную функцию в C# здесь , но я не смог изменить структуры, на которые IntPtr
указывал. Я должен был создать свою собственную структуру и изменить указатель, чтобы он указывал на нее?