Получение текущего языка ввода системы Windows и уведомлений об изменении языка - PullRequest
3 голосов
/ 15 сентября 2010

Я пишу на экране приложения клавиатуры.Клавиатура работает в отдельном процессе, и окно приложения является верхним и не получает фокус.Когда я переключаюсь между приложениями, язык меняется.Как я могу получить текущий выбранный язык на панели инструментов и как я могу получать уведомления при его изменении?

Классы .net InputLanguageManager и InputLanguage могут делать это только для приложений, в которых они используются.

Я обнаружил, что сообщение WM_INPUTLANGCHANGE отправляется при смене языка.Но это сообщение отправляется только в специализированное окно.

Приложение osk.exe в Windows 7 может сделать это.Пожалуйста, дайте мне несколько советов, как мне достичь этого поведения.

Ответы [ 2 ]

0 голосов
/ 24 сентября 2010

Глобальные перехватчики работают хорошо, но WM_INPUTLANGCHANGE и WM_INPUTLANGCHANGEREQUEST отправляются только при изменении языка ввода нажатием горячих клавиш или на панели инструментов.Но когда вы переключаетесь между приложениями с разными языками ввода, язык изменяется на панели инструментов, а сообщения Windows не отправляются.

0 голосов
/ 24 сентября 2010

Быстрое путешествие вокруг Google дало этот результат .Кажется, это указывает на то, что системные перехватчики - правильный путь для этого.

...