C# Winforms - 在后台获取和更新当前键盘语言

C# Winforms - Get and update current keyboard language in background

提问人:Shak1234 提问时间:10/7/2023 更新时间:10/7/2023 访问量:64

问:

我想制作一个函数,当它在后台运行时获取用户的当前键盘语言(表单是隐藏的)。我尝试过使用,但由于某种原因,它在线程中无法正常工作 - 用户在语言之间切换后它不会更新。我尝试了很多不同的方法,例如使用计时器,但是使用任何形式的线程的所有方法都不起作用。InputLanguage.CurrentInputLanguage.Culture.Name

我还注意到一个奇怪的行为 - 当我在获得当前语言后创建一个 MessageBox 时,它会神奇地更新。

有人可以帮助我或向我解释我应该怎么做吗?

(英语不是我的母语,所以如果这篇文章不是很清楚,我很抱歉)。

C# 表单 winforms 输入 线程同步

评论

0赞 Jimi 10/7/2023
你指的是哪种线程?此设置特定于 Thread,需要 STA Thread -- 请参阅有关 GetKeyboardLayout() 的说明。还有关于 SystemEvents.UserPreferenceChanged 的说明
0赞 Dmitry 10/7/2023
也许这些主题会有所帮助:thisthis(WPF) 和 this(WPF)。
0赞 Shak1234 10/7/2023
非常感谢,您的解决方案效果很好:)

答: 暂无答案