Хук слева, хук справа или глобальный захват изменения раскладки клавиатуры,ч.1

Ответить
Аватара пользователя
Potato Sub
Сообщения: 2
Зарегистрирован: Пт апр 21, 2017 1:55 pm

Хук слева, хук справа или глобальный захват изменения раскладки клавиатуры,ч.1

Сообщение Potato Sub » Пт апр 21, 2017 2:52 pm

Введение
У меня появилась необходимость внедрить в проект (основанный на технологии WPF) «Экранную клавиатуру» (приложение эксплуатируется без внешней клавиатуры ввода). Использование стандартных средств ОС Windows не подходит, так как в целях безопасности необходимо ограничить количество клавиш, а также необходимо контролировать внешнее представление компонента (темы и стили).
На CodePlex я нашел реализацию данного чуда, проект . Теперь я могу писать свой компонент, со своей версткой, поддержкой тем и стилей. Но вот одна проблема — данная клавиатура не меняет свое представление (символы на кнопках) при изменении раскладки. Для этого ей надо об этом сообщить, хуком в челюсть. О чем и пойдет речь дальше.
Велосипед
Я очень любил свой велосипед, пока в детстве у меня его не украли. И когда есть пару часов и никто не гонит, почему бы не позаниматься велосипедами? Я конечно же зарылся в MSDN и WinAPI, тут же на свет появилось вооружение:
Функции:
SetWindowsHookEx
UnhookWindowsHookEx
CallNextHookEx
Константы
WH_SHELL
HSHELL_LANGUAGE
Что ж, нам надо поставить захват на события Shell и ждать нужного сообщения! Но как оказалось из-за ненативности . NET сборок, это не позволяет сделать глобальный захват на всю систему.

Ответить

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость