【发布时间】:2014-11-05 23:41:12
【问题描述】:
有没有一种方法可以检测 Windows/os 语言是否发生变化,即使我的应用程序没有获得焦点?
到目前为止,只有当应用程序专注于使用时,我才能实现我想要的:
string language = "";
System.Windows.Input.InputLanguageManager.Current.InputLanguageChanged +=
new System.Windows.Input.InputLanguageEventHandler((sender, e) =>
{
language = e.NewLanguage.DisplayName;
MessageBox.Show(language);
});
但正如你所理解的,这并不是我想要的......
我正在考虑其他解决方案,例如挂钩更改语言的键(例如 alt+shift),但我无法知道当前正在使用什么语言,并且用户可以更改默认热键...
非常感谢您的帮助。
【问题讨论】:
-
您实际上并未更改流程的输入语言。仅适用于前台的任何进程。语言栏的正常行为。
-
@HansPassant 我不明白,但我想要的是每当语言发生变化时挂钩......
-
@Run - 我想确认一件事。当焦点返回到您的应用程序时,将生成 InputLanguageChanged 事件对您来说还不够。
-
@MichałKomorowski 是的,你是对的。我想在输入语言发生变化时调用函数,无论我的应用是否处于焦点。
-
@Ron 我认为 Hans 的意思是输入语言在你的应用程序中实际上并没有改变,直到它被带到前台.
标签: c# wpf hook input-language