2010-06-22 26 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