2010-06-22 69 views
2

基本上我想编写一个应用程序来显示当前语言作为托盘图标。主要是我可以编写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”文章,也许这会帮助我解决这个问题。关于开关检测,这是一个很好的问题。

+0

好的,如果给出“-1”,请考虑告诉我如何改进问题。这个问题也困扰着其他人。谢谢。 – Shiki 2010-06-22 06:41:01

+3

如何谷歌第一,并尝试编写这样一个程序,当你遇到一个特定的问题,你不能解决然后问这里的问题。 – Gary 2010-06-22 06:42:34

+1

因为Google上的答案通常是由未知人员撰写的。我希望得到一个值得信任,可以编码的人,以及谁知道他在做什么的“开始帮助”。 (无论如何,我的Google-fu越来越差,我猜是因为我找不到解决方案。) – Shiki 2010-06-22 06:44:26

回答

3

获取用户的整体UI语言GetUserDefaultUILanguage

获取当前主题的语言GetThreadUILanguageGetThreadLocale

获取当前键盘输入语言GetKeyboardLayout

在Windows 7之前的Windows中显示通知区域图标,Shell_NotifyIcon。在Windows 7 Shell_NotifyIcon可能仍然工作,如果用户设置适当的选项,但否则你必须找到另一种方式。

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

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

+0

谢谢你,很好的回答。将尽快尝试这些。谢谢!!! – Shiki 2010-06-22 08:35:04