2012-10-18 9 views
5

Ich bin die Gestaltung einer Tastatur auf dem Bildschirm,Wie ermittelt man die aktuelle Eingabesprache?

ich feststellen müssen, welche Sprache durch den Benutzer eingestellt wurde, und die Sprache, die er nun in den anderen Threads,

dh ich brauche die Sprache in ausgewählten kennen die Taskleiste Sprachumschalter:

language switcher

PS Aktuelle Kultur gibt die Sprache in der Bildschirmtastatur Anwendung, die nicht der Fall ist, die ich suche ..

Antwort

5

Die Lösung bestand darin, das Tastaturlayout für das Vordergrundfenster zu erhalten, und wenden Sie es dann auf der Bildschirmtastatur in den üblichen Möglichkeiten für die Sprache ..

  IntPtr fore = GetForegroundWindow(); 
      uint tpid = GetWindowThreadProcessId(fore, IntPtr.Zero); 
      IntPtr hKL = GetKeyboardLayout(tpid); 
      hKL = (IntPtr)(hKL.ToInt32() & 0x0000FFFF); 
      InputLanguageManager m = InputLanguageManager.Current; 
      m.CurrentInputLanguage = new System.Globalization.CultureInfo(hKL.ToInt32()); 
      //IntPtr i = LoadKeyboardLayout(hKL.ToString(), 1); 

      InputLanguage = InputLanguageManager.Current.CurrentInputLanguage.ToString(); 
5

Sie erhalten auch mit WMI und prüfen:

using System; 
using System.Management; 
using System.Windows.Forms; 

namespace WMISample 
{ 
    public class MyWMIQuery 
    { 
     public static void Main() 
     { 
      try 
      { 
       ManagementObjectSearcher searcher = 
        new ManagementObjectSearcher("root\\CIMV2", 
        "SELECT * FROM Win32_BIOS"); 

       foreach (ManagementObject queryObj in searcher.Get()) 
       { 
        Console.WriteLine("-----------------------------------"); 
        Console.WriteLine("Win32_BIOS instance"); 
        Console.WriteLine("-----------------------------------"); 
        Console.WriteLine("CurrentLanguage: {0}", queryObj["CurrentLanguage"]); 
       } 
      } 
      catch (ManagementException e) 
      { 
       MessageBox.Show("An error occurred while querying for WMI data: " + e.Message); 
      } 
     } 
    } 
} 
Verwandte Themen