Anzeige der aktuellen Sprache Layout in traybar
-
29-09-2019 - |
Frage
Grundsätzlich möchte ich eine Anwendung schreiben, die die aktuelle Sprache als Tray-Icon angezeigt werden würde. Ich kann vor allem C ++ und C # -Code. Ratet mal, Google würde mir helfen, aber ich mag es hier fragt zuerst, da die Gemeinde, hier das Wissen ist das Vertrauen etwas, was ich.
(nie mit solchen Teilen des Systems zankt so weit. Also, warum würde Ich mag die Gemeinschaft fragen.)
Okay, dank Ihrer Hilfe konnte ich zwei Möglichkeiten entdecken. Unter Verwendung der DllImport
in C # (Import der user32.dll
) und die InputLanguage
.
Gefunden ein Ausschnitt:
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;
}
Ich bewerben dies wie folgt aus:
InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage;
notifyIcon.Text = myCurrentLanguage.LayoutName + '\n' + myCurrentLanguage.Culture.DisplayName;
Diese zeigt es, wenn Sie es über das Symbol bewegen. Allerdings wird es nicht auf Schalter aktualisieren, noch zeigt das Layout als Text im Tray-Bereich. Dafür fand ich eine „ Zeichnung in VB.NET “ -Artikel, vielleicht dies helfen wird, ich dieses Problem zu erarbeiten. Über den Schalter erkennen, dass eine gute Frage.
Lösung
Um die Benutzergesamt UI Sprache zu erhalten, GetUserDefaultUILanguage
.
Um den aktuellen Thread Sprache, GetThreadUILanguage
oder GetThreadLocale
zu erhalten.
Um die aktuelle Tastatureingabesprache zu erhalten, GetKeyboardLayout
.
Um ein Symbol im Infobereich in Windows vor Windows 7, Shell_NotifyIcon
anzuzeigen. In Windows 7 Shell_NotifyIcon
könnte noch funktionieren, wenn der Benutzer über die entsprechenden Optionen setzt, aber ansonsten muss man einen anderen Weg finden.
Wenn Sie mehr als eine mögliche Tastatureingabesprache haben, zeigt Windows bereits die aktuelle Tastatureingabesprache in der Sprachleiste, wenn der Benutzer es deaktiviert hat. Der Benutzer kann die Sprachleiste in der Taskleiste setzen, obwohl es ist nicht ganz das gleiche wie in dem Infobereich zu sein.
Wenn Sie Mitteilungen empfangen, wenn der Benutzer eine Sprache ändert, WM_SETTINGCHANGE
könnten Sie wissen, wann Sie SystemParametersInfo
anrufen sollte zu überprüfen. Ich bin mir nicht sicher, ob es ein besserer Weg.