C# 在traybar中显示当前语言布局

C# 在traybar中显示当前语言布局,c#,c++,windows,windows-7,keyboard-layout,C#,C++,Windows,Windows 7,Keyboard Layout,基本上,我想写一个应用程序,将当前语言显示为一个托盘图标。我主要可以对C++和C语言进行编码。我想谷歌会帮助我,但我想先问一下,因为社区,这里的知识是我信任的 (到目前为止,我从未与该系统的这些部分发生过争执。因此,我想问问社区。) 好的,多亏了你的帮助,我找到了两种方法。使用C#中的DllImport(导入user32.dll)和InputLanguage 找到一个代码段: public void SetNewCurrentLanguage() { // Gets the defaul

基本上,我想写一个应用程序,将当前语言显示为一个托盘图标。我主要可以对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;  

如果将其悬停在图标上方,则会显示它。但是,它不会在交换机上更新,也不会在托盘区域中以文本形式显示布局。为此,我找到了一篇“”的文章,也许这会帮助我解决这个问题。关于切换检测,这是一个很好的问题。

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

要获取当前线程的语言,
GetThreadUILanguage
GetThreadLocale

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

要在Windows 7之前的Windows中显示通知区域图标,
Shell\u NotifyIcon
。在Windows 7中,如果用户设置了适当的选项,则NotifyIcon可能仍然可以工作,但是您必须找到另一种方法

如果您有多种可能的键盘输入语言,Windows会在语言栏中显示当前的键盘输入语言,除非用户已禁用该语言。用户可以将语言栏放在任务栏中,尽管它与通知区域中的语言栏不同


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

好的,如果给出一个“-1”,请考虑告诉我如何改进这个问题。这个问题也困扰着其他人。谢谢。你先用谷歌搜索一下,然后试着写一个这样的程序,当你遇到一个你无法解决的问题时,在这里问一个问题。因为谷歌上的答案通常是由不认识的人写的。我想得到一个“开始帮助”的人谁是值得信任的,谁可以编码,谁知道他在做什么。(无论如何,我想我的谷歌fu越来越糟糕,因为我在那里找不到解决方案。)什么操作系统?还有,整体的UI语言或特定线程的语言或键盘输入语言?这只会让你看起来很懒。你一定找到了一些关于API等的信息才能使用,对吗?一些相关的示例代码?你发现并尝试了什么?