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

Ответить
Аватара пользователя
Lounge Master
Сообщения: 1
Зарегистрирован: Ср май 10, 2017 1:01 pm

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

Сообщение Lounge Master » Ср май 10, 2017 1:58 pm

NET сборок, это не позволяет сделать глобальный захват на всю систему. А хочется.
Хорошие — копируют
Дальнейший поиск приводит на CodeProject в проект . Идея обхода проблемы — в написании native DLL, которая будет устанавливать глобальный захват. И уведомлять CLR через Windows сообщения. Там реализованы все глобальные захваты. Меня интересут shell, представленный GlobalHook. ShellHook классом. Попробуем это добавить в наш любимый WPF.
Поддержка WPF
Проект GlobalHook ориентирован под WinForms. Поддержка WPF окна будет выглядеть так: private void Window_Loaded(object sender, RoutedEventArgs e)
{
//инициализируем захват для текущего окна hook = new GlobalHooks. ShellHook(new WindowInteropHelper(this). Handle); hook. Language = new GlobalHooks. WindowEventHandler(hook_Language);
//ставим еще один захват на очередь сообщений, неудобно?
HwndSource source = PresentationSource. FromVisual(this) as HwndSource; source. AddHook(WndProc); hook. Start();
} void hook_Language(IntPtr Handle)
{ var culture = new CultureInfo(Handle. ToInt32());
//это содержимое произвольного статус-презентера lang. Content = culture. NativeName;
}
//неудобная реализация, неправда ли?

Ответить

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

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