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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top