Получение выбранной раскладки клавиатуры другого окна - C#
Формулировка задачи:
Есть форма программы, на которой имеется Label, в котором отображается выбранная раскладка. Обновление происходит каждые 100 мс, но обновится оно только в том случае. если выбранным окном будет моя программа. К примеру я печатаю в блокноте русскими символами, в моей программе показано что у меня выбрана английская раскладка и это отображение не поменяется пока я не кликну по своей программе. Собственно поэтому и спрашиваю,
как можно узнать раскладку клавиатуры конкретного окна (того же блокнота) и отобразить ее в label.
Есть мысли на счет хука клавиатуры, но хотелось бы обойтись без него.
Поглядел на MSDN, нужно перехватить сообщение WM_INPUTLANGCHANGE активного окна и обработать его в программе, но ума не приложу как это сделать.
Решение задачи: «Получение выбранной раскладки клавиатуры другого окна»
textual
Листинг программы
IntPtr selectedWindow = Translator.NativeMethods.GetForegroundWindow(); int currId; if (Translator.CheckKeyboardLayout(Handle, selectedWindow, out currId)) { switch (currId) { case 1033: // 1033 - английский break; case 1049: //русский break; } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д