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

3
我正在编写屏幕键盘应用程序。 该键盘在单独的进程中运行,应用程序窗口处于最顶层且不获取焦点。当我在不同应用程序之间切换时,语言会发生变化。如何获取工具栏上当前选择的语言,并在其更改时得到通知?
.NET 的 InputLanguageManager 和 InputLanguage 类只能对它们所使用的应用程序进行此操作。
我发现当语言更改时,将发送 WM_INPUTLANGCHANGE 消息。但是,该消息仅发送到具有焦点的窗口。
Windows 7 中的 osk.exe 应用程序可以实现这一点。 请给我一些建议,如何实现这种行为。
2个回答

0
在谷歌上快速搜索得到了this result的结果。它似乎表明系统钩子是解决这个问题的正确方法。

0

全局钩子能够正常工作,但是WM_INPUTLANGCHANGE和WM_INPUTLANGCHANGEREQUEST仅在通过热键或工具栏更改输入语言时发送。但是当您在具有不同输入语言的应用程序之间切换时,语言会在工具栏上更改,但没有Windows消息被发送。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接