Pregunta

Básicamente Quiero escribir una aplicación que mostrará el idioma actual como un icono de la bandeja. Principalmente puedo código C ++ y C #. Supongo que Google me ayudaría, pero me gustaría preguntar aquí en primer lugar, ya que la comunidad, el conocimiento aquí es algo que confianza.

(Nunca wrangled con tales partes del sistema hasta el momento. Así que por eso me gustaría pedir a la comunidad.)

Está bien gracias a su ayuda, lograron descubrir dos maneras. Uso de la DllImport en C # (importar el user32.dll) y la InputLanguage.

Encontrados un fragmento:

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

Me aplicó este como el siguiente:

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

Además, muestra que si pasa por encima del icono. Sin embargo, no se actualizará en el interruptor, ni mostrar el diseño como texto en el área de la bandeja. Por eso, me encontré con un " Dibujo en VB.NET " el artículo, tal vez esto ayude me elaboración de este problema. Acerca del interruptor de detección, que es una buena pregunta.

¿Fue útil?

Solución

Para obtener el lenguaje en general la interfaz de usuario del usuario, GetUserDefaultUILanguage.

Para obtener el idioma del hilo actual, GetThreadUILanguage o GetThreadLocale.

Para obtener el idioma de entrada de teclado actual, GetKeyboardLayout.

Para visualizar un icono del área de notificación de Windows anteriores a Windows 7, Shell_NotifyIcon. En Windows 7 Shell_NotifyIcon posible que aún trabajo si el usuario configura las opciones apropiadas, pero por lo demás hay que encontrar otra manera.

Si usted tiene más de un idioma de entrada del teclado sea posible, Windows ya se muestra el idioma de entrada de teclado actual en la barra de idiomas a menos que el usuario ha inhabilitado. El usuario puede poner la barra de idioma en la barra de tareas, aunque no es exactamente lo mismo que estar en el área de notificación.

Si desea recibir notificaciones cuando el usuario cambia de un idioma, WM_SETTINGCHANGE podría hacerle saber cuándo debe llamar para comprobar SystemParametersInfo. No estoy seguro de si hay una mejor manera.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top