我正在尝试实现一个监视语言/布局更改的服务。我在英语和俄语之间切换。到目前为止,我已经发现了这个问题,并尝试实现和安装那里建议的两个水槽。然而,也存在一些问题。CCD_ 1根本没有被触发;ITfLanguageProfileNotifySink::OnLanguageChange
也没有被触发;ITfLanguageProfileNotifySink::OnLanguageChanged
只有当我的程序的主窗口在前台时才会触发,但它不包含任何关于语言的信息。是否有任何方法可以全局监控输入语言更改事件?
我找到了另一种检测此类更改的方法:将SetWindowsHookEx与WH_SHELL
一起使用。其中一个可用的事件是HSHELL_LANGUAGE
,这正是我所需要的,测试项目似乎运行得很好。亚历山大·谢斯塔科夫(Alexander Shestakov(的一篇文章描述了一个与我试图实现的目标非常相似的程序,它还有一个github项目的链接,我用它作为例子。