语言更改时获取当前Windows系统输入语言和通知

时间:2010-09-15 16:10:40

标签: c# .net c winapi

我正在写屏幕键盘应用程序。 键盘在单独的进程中运行,应用程序窗口位于最顶层,无法获得焦点。当我在应用程序之间切换时,语言会发生变化。如何在工具栏上获取当前选定的语言,如何在更改时收到通知?

.net的InputLanguageManager和InputLanguage类只能对使用它们的应用程序执行此操作。

我发现语言更改时会发送WM_INPUTLANGCHANGE消息。但是这条消息只发送到焦点窗口。

Windows 7中的osk.exe应用程序可以执行此操作。 请告诉我一些如何达到这种行为的建议。

2 个答案:

答案 0 :(得分:0)

快速浏览Google给了this result。它似乎表明系统挂钩是正确的方法。

答案 1 :(得分:0)

全局挂钩运行良好,但WM_INPUTLANGCHANGE和WM_INPUTLANGCHANGEREQUEST仅在您通过按热键或工具栏更改输入语言时发送。但是当您在使用不同输入语言的应用程序之间切换时,工具栏上的语言会发生变化,但不会发送任何Windows消息。