Отображение текущего языкового макета в Трейбаре
-
29-09-2019 - |
Вопрос
По сути, я хочу написать приложение, которое отобразило бы текущий язык в качестве значка для лотка. В основном я могу кодировать 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;
Это отображает его, если вы паритете его выше значка. Тем не менее, он не будет обновлять на переключателе и не показывать макет в виде текста в области лотка. Для этого я нашел "Рисунок в vb.net.«Статья, может быть, это поможет мне решить эту проблему. Что касается обнаружения переключения, это хороший вопрос.
Решение
Чтобы получить общий язык пользователя, общий язык пользователя, GetUserDefaultUILanguage
.
Чтобы получить язык текущего потока, GetThreadUILanguage
или GetThreadLocale
.
Чтобы получить текущий язык ввода клавиатуры, GetKeyboardLayout
.
Чтобы отобразить значок области уведомления в Windows до Windows 7, Shell_NotifyIcon
. Анкет В Windows 7. Shell_NotifyIcon
Может все еще работать, если пользователь установит соответствующие варианты, но в противном случае вам нужно найти другой способ.
Если у вас есть более чем один возможный язык ввода клавиатуры, Windows уже отображает текущий язык ввода клавиатуры в языковой панели, если только пользователь отключил его. Пользователь может поместить языковую панель в панель задач, хотя он не совсем такой же, как в области уведомления.
Если вы хотите получить уведомления, когда пользователь меняет язык, WM_SETTINGCHANGE
может сообщить вам, когда вы должны позвонить SystemParametersInfo
Проверять. Я не уверен, есть ли лучший способ.