Domanda

In sostanza voglio scrivere un'applicazione che visualizza la lingua corrente come icona nella barra. Principalmente posso codice C ++ e C #. Indovinate Google mi avrebbe aiutato fuori, ma vorrei chiedere qui in primo luogo, dal momento che la comunità, la conoscenza qui è qualcosa che ho fiducia.

(mai litigato con tali parti del sistema finora. Ecco, questo è il motivo per cui vorrei chiedere alla comunità.)

Ok grazie al vostro aiuto, sono riuscito a scoprire due modi. Utilizzando la DllImport in C # (importazione del user32.dll) e il InputLanguage.

Trovato un frammento:

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

I applicato questo come il seguente:

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

Questo lo visualizza se si passa sopra l'icona. Tuttavia, esso non aggiornerà interruttore, né visualizza layout testo nell'area vassoio. Per questo, ho trovato un " Disegno in VB.NET " articolo, forse questo ti aiuterà me lavorare fuori questo problema. Circa l'interruttore di rilevare, che è una buona domanda.

È stato utile?

Soluzione

Per ottenere la lingua dell'interfaccia utente complessiva dell'utente, GetUserDefaultUILanguage.

Per ottenere del thread corrente lingua, GetThreadUILanguage o GetThreadLocale.

Per ottenere la lingua di input della tastiera corrente, GetKeyboardLayout.

Per visualizzare un'icona nell'area di notifica di Windows precedenti a Windows 7, Shell_NotifyIcon. In Windows 7 Shell_NotifyIcon potrebbe ancora lavoro se l'utente imposta le opzioni appropriate, ma per il resto si dovrà trovare un altro modo.

Se si dispone di più di un possibile linguaggio input da tastiera, Windows visualizza già la lingua di input della tastiera corrente nella barra di lingua a meno che l'utente ha disabilitato. L'utente potrebbe mettere la barra della lingua nella barra delle applicazioni, anche se non è proprio la stessa cosa come essere nell'area di notifica.

Se si desidera ricevere notifiche quando l'utente modifica un linguaggio, WM_SETTINGCHANGE potrebbe farvi sapere quando si dovrebbe chiamare SystemParametersInfo per controllare. Non sono sicuro se c'è un modo migliore.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top