我正在写屏幕键盘应用程序。 键盘在单独的进程中运行,应用程序窗口位于最顶层,无法获得焦点。当我在应用程序之间切换时,语言会发生变化。如何在工具栏上获取当前选定的语言,如何在更改时收到通知?
.net的InputLanguageManager和InputLanguage类只能对使用它们的应用程序执行此操作。
我发现语言更改时会发送WM_INPUTLANGCHANGE消息。但是这条消息只发送到焦点窗口。
Windows 7中的osk.exe应用程序可以执行此操作。 请告诉我一些如何达到这种行为的建议。
答案 0 :(得分:0)
快速浏览Google给了this result。它似乎表明系统挂钩是正确的方法。
答案 1 :(得分:0)
全局挂钩运行良好,但WM_INPUTLANGCHANGE和WM_INPUTLANGCHANGEREQUEST仅在您通过按热键或工具栏更改输入语言时发送。但是当您在使用不同输入语言的应用程序之间切换时,工具栏上的语言会发生变化,但不会发送任何Windows消息。