gpt4 book ai didi

c# - 在多语言计算机中检测当前键盘语言/布局名称

转载 作者:太空狗 更新时间:2023-10-29 21:08:34 25 4
gpt4 key购买 nike

我正在尝试用 C# 开发一个应用程序,它需要检测用户选择的语言(键盘布局)。但是我的计算机上安装了两种语言,代码总是返回默认的一种,即使我在运行应用程序之前更改了语言。

InputLanguage myCurrentLanguage = InputLanguage.InstalledInputLanguages[1]; // here I can see collection of languages 
InputLanguage myCurrentLanguage2 = InputLanguage.CurrentInputLanguage; // always return first or default one

是否有任何技术来检测真正选择/运行的语言?

最佳答案

命名空间 System.Threading 中的

Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName 返回您所说的默认文化,与键盘布局无关。 IE。在我的计算机上,这会返回 "de",这是我用于日期和数字格式设置的区域性。但是,我使用的是 US-ASCII 键盘,.Culture.Name.LayoutName 来自 System.Windows.Forms.InputLanguage.CurrentInputLanguage 返回“en-US”“US”

Thread.CurrentThread.CurrentCulture 提供了很多附加信息,例如 KeyboardLayoutIdDisplayName(本地化文化名称)、EnglishNameDateTimeFormat 等。


我做了一些测试并注意到了一个奇怪的行为。我显示了 Windows 语言栏并选择了辅助输入语言。但是每当我启动一个小的测试 WinForms 应用程序时,输入语言会自动切换回默认语言。应用程序启动后,我将输入语言切换回第二语言。现在就停留在这个。

在这两种情况下,这都为我提供了正确的输入语言(显示在语言栏上的语言):

lblInputLanguage.Text = InputLanguage.CurrentInputLanguage.Culture.Name;
lblKeyboardLayout.Text = InputLanguage.CurrentInputLanguage.LayoutName;

super 用户的这个帖子可能会阐明这个问题:How to avoid keyboard layout automatically changing on windows

关于c# - 在多语言计算机中检测当前键盘语言/布局名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27747176/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com