gpt4 book ai didi

c# - 在托盘栏中显示当前语言布局

转载 作者:可可西里 更新时间:2023-11-01 10:09:39 27 4
gpt4 key购买 nike

基本上我想编写一个将当前语言显示为托盘图标的应用程序。主要是我可以编写 C++ 和 C#。猜猜谷歌会帮助我,但我想先在这里问一下,因为社区,这里的知识是我信任的。

(到目前为止从未与系统的这些部分争论过。所以这就是我想问社区的原因。)

好的,感谢您的帮助,我设法发现了两种方法。在 C# 中使用 DllImport(导入 user32.dll)和 InputLanguage

找到一个片段:

public void SetNewCurrentLanguage() {
// Gets the default, and current languages.
InputLanguage myDefaultLanguage = InputLanguage.DefaultInputLanguage;
InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage;
textBox1.Text = "Current input language is: " + myCurrentLanguage.Culture.EnglishName + '\n';
textBox1.Text += "Default input language is: " + myDefaultLanguage.Culture.EnglishName + '\n';

// Changes the current input language to the default, and prints the new current language.
InputLanguage.CurrentInputLanguage = myDefaultLanguage;
textBox1.Text += "Current input language is now: " + myDefaultLanguage.Culture.EnglishName;
}

我像下面这样应用它:

        InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage;
notifyIcon.Text = myCurrentLanguage.LayoutName + '\n' + myCurrentLanguage.Culture.DisplayName;

如果将它悬停在图标上方,就会显示它。但是,它不会在切换时更新,也不会在托盘区域中将布局显示为文本。为此,我找到了一篇“Drawing in VB.NET”文章,也许这会帮助我解决这个问题。关于开关检测,这是个好问题。

最佳答案

要获取用户的整体 UI 语言,GetUserDefaultUILanguage

要获取当前线程的语言,GetThreadUILanguageGetThreadLocale

要获取当前键盘输入语言,GetKeyboardLayout

要在 Windows 7 之前的 Windows 中显示通知区域图标,Shell_NotifyIcon。在 Windows 7 中,如果用户设置了适当的选项,Shell_NotifyIcon 可能仍然有效,否则您必须找到另一种方法。

如果您有不止一种可能的键盘输入语言,Windows 会在语言栏中显示当前的键盘输入语言,除非用户已将其禁用。用户可能会将语言栏放在任务栏中,尽管这与在通知区域中不太一样。

如果您想在用户更改语言时收到通知,WM_SETTINGCHANGE 可能会让您知道何时应该调用 SystemParametersInfo 进行检查。我不确定是否有更好的方法。

关于c# - 在托盘栏中显示当前语言布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3090748/

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