Получение выбранной раскладки клавиатуры другого окна - 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;
                        }
                    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы