Windows 10 检测键盘布局变化
Windows 10 detect keyboard layout change
我正在尝试实施一项服务来监视 language/layout 更改。我在英语和俄语之间切换。到目前为止,我已经找到 this question 并尝试实施和安装那里建议的两个接收器。
然而,也有问题。 ITfActiveLanguageProfileNotifySink::OnActivated
根本没有触发; ITfLanguageProfileNotifySink::OnLanguageChange
也不触发; ITfLanguageProfileNotifySink::OnLanguageChanged
只有当我的程序的主要 window 在前台时才会触发,但它不包含任何关于语言的信息。有什么方法可以全局监控输入语言变化事件吗?
我找到了另一种检测此类变化的方法:将 SetWindowsHookEx 与 WH_SHELL
结合使用。可用事件之一是 HSHELL_LANGUAGE
,这正是我所需要的,测试项目似乎运行良好。
Alexander Shestakov 的 an article 描述了一个与我想要实现的程序非常相似的程序,它还有一个 link 到 github 项目,我将其用作示例。
我正在尝试实施一项服务来监视 language/layout 更改。我在英语和俄语之间切换。到目前为止,我已经找到 this question 并尝试实施和安装那里建议的两个接收器。
然而,也有问题。 ITfActiveLanguageProfileNotifySink::OnActivated
根本没有触发; ITfLanguageProfileNotifySink::OnLanguageChange
也不触发; ITfLanguageProfileNotifySink::OnLanguageChanged
只有当我的程序的主要 window 在前台时才会触发,但它不包含任何关于语言的信息。有什么方法可以全局监控输入语言变化事件吗?
我找到了另一种检测此类变化的方法:将 SetWindowsHookEx 与 WH_SHELL
结合使用。可用事件之一是 HSHELL_LANGUAGE
,这正是我所需要的,测试项目似乎运行良好。
Alexander Shestakov 的 an article 描述了一个与我想要实现的程序非常相似的程序,它还有一个 link 到 github 项目,我将其用作示例。