2012-10-18 15 views
5

BenGeçerli giriş dili nasıl belirlenir?

yani ben seçilen dili bilmek gerekir,

Ben kullanıcı ve hangi dili o diğer konuları şimdi kullanıyor tarafından ayarlanmış hangi dili belirlemek gerekir, ekran klavyesinde bir tasarım am Görev çubuğu dil değiştirici:

language switcher

PS Şu anki kültür ekran klavyesi uygulamasında kullanılan dili döndürür, bu benim durumumda değil ..

cevap

5

Çözüm önplan penceresi için Klavye Düzeni almak ve sonra ekran klavyesine uygulamaktı. ve

  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

da WMI kullanarak alabilirsiniz .. zamanki şekillerde dil için kontrol edin:

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); 
      } 
     } 
    } 
} 
İlgili konular