Question

En fait, je veux écrire une application qui afficherait la langue courante comme icône de la barre. Principalement je peux le code C ++ et C #. Devinez Google me aider mais je voudrais demander ici d'abord, puisque la communauté, la connaissance est quelque chose que je confiance ici.

(jamais avec ces parties disputaient du système jusqu'à présent. Voilà pourquoi je voudrais demander à la communauté.)

D'accord grâce à votre aide, je réussi à découvrir deux façons. Utilisation de la DllImport en C # (importation du user32.dll) et le InputLanguage.

Trouver un extrait:

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;
}  

J'appliqué cela comme suit:

        InputLanguage myCurrentLanguage = InputLanguage.CurrentInputLanguage;
        notifyIcon.Text = myCurrentLanguage.LayoutName + '\n' + myCurrentLanguage.Culture.DisplayName;  

Cette affiche si vous passez la souris au-dessus de l'icône. Cependant, il ne sera pas mise à jour sur le commutateur, ni montrer la mise en page sous forme de texte dans la zone du plateau. Pour cela, j'ai trouvé un article « Dessin en VB.NET », peut-être cela aidera je travaille sur cette question. A propos de l'interrupteur détecter, qui est une bonne question.

Était-ce utile?

La solution

Pour l'ensemble langue de l'interface de l'utilisateur, GetUserDefaultUILanguage.

Pour obtenir la langue, ou GetThreadUILanguage GetThreadLocale du thread courant.

Pour obtenir la langue de saisie du clavier en cours, GetKeyboardLayout.

Pour afficher une zone de notification icône dans Windows avant Windows 7, Shell_NotifyIcon. Dans Windows 7 Shell_NotifyIcon pourrait encore fonctionner si l'utilisateur définit les options appropriées, mais sinon vous devez trouver une autre façon.

Si vous avez plus d'une langue d'entrée du clavier possible, Windows affiche déjà la langue de saisie du clavier en cours dans la barre de langue, à moins que l'utilisateur a désactivé. L'utilisateur peut mettre la barre de langue dans la barre des tâches, mais il est pas tout à fait la même chose qu'être dans la zone de notification.

Si vous souhaitez recevoir des avis lorsque l'utilisateur change une langue, WM_SETTINGCHANGE peut vous laisser savoir quand vous devez appeler SystemParametersInfo pour vérifier. Je ne sais pas s'il y a une façon meilleure.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top