Windows 10 检测键盘布局变化

Windows 10 detect keyboard layout change

我正在尝试实施一项服务来监视 language/layout 更改。我在英语和俄语之间切换。到目前为止,我已经找到 this question 并尝试实施和安装那里建议的两个接收器。 然而,也有问题。 ITfActiveLanguageProfileNotifySink::OnActivated根本没有触发; ITfLanguageProfileNotifySink::OnLanguageChange也不触发; ITfLanguageProfileNotifySink::OnLanguageChanged 只有当我的程序的主要 window 在前台时才会触发,但它不包含任何关于语言的信息。有什么方法可以全局监控输入语言变化事件吗?

我找到了另一种检测此类变化的方法:将 SetWindowsHookExWH_SHELL 结合使用。可用事件之一是 HSHELL_LANGUAGE,这正是我所需要的,测试项目似乎运行良好。 Alexander Shestakov 的 an article 描述了一个与我想要实现的程序非常相似的程序,它还有一个 link 到 github 项目,我将其用作示例。