Отображение текущей языковой раскладки на панели задач - PullRequest
2 голосов
/ 22 июня 2010

В основном я хочу написать приложение, которое отображало бы текущий язык в виде иконки в трее. В основном я могу кодировать C ++ и C #. Думаю, Google поможет мне, но я бы хотел сначала спросить об этом здесь, поскольку сообщество, знания здесь - это то, чему я доверяю.

(До сих пор никогда не спорил с такими частями системы. Поэтому я хотел бы спросить сообщество.)

Хорошо, благодаря вашей помощи мне удалось обнаружить два пути. Использование DllImport в C # (импорт 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 ", возможно, это поможет мне решить эту проблему. О переключателе обнаружения, это хороший вопрос.

1 Ответ

3 голосов
/ 22 июня 2010

Чтобы получить общий язык пользовательского интерфейса, GetUserDefaultUILanguage.

Чтобы получить язык текущего потока, GetThreadUILanguage или GetThreadLocale.

Чтобы получить текущий язык ввода с клавиатуры,GetKeyboardLayout.

Чтобы отобразить значок области уведомлений в Windows до Windows 7, Shell_NotifyIcon.В Windows 7 Shell_NotifyIcon может по-прежнему работать, если пользователь устанавливает соответствующие параметры, но в противном случае вам придется искать другой способ.

Если у вас есть несколько возможных языков ввода с клавиатуры, Windows уже отображает текущий язык ввода с клавиатурыв языковой панели, если пользователь не отключил его.Пользователь может поместить языковую панель в панель задач, хотя она не совсем такая же, как в области уведомлений.

Если вы хотите получать уведомления, когда пользователь меняет язык, WM_SETTINGCHANGE может позволить вамзнаю, когда вам следует позвонить SystemParametersInfo, чтобы проверить.Я не уверен, что есть лучший способ.

...