2012-10-18 10 views
5

मैं स्क्रीन कीबोर्ड पर एक डिजाइनिंग कर रहा हूँ,वर्तमान इनपुट भाषा कैसे निर्धारित करें?

मैं निर्धारित करने के लिए जो भाषा उपयोगकर्ता और जो भाषा वह अन्य धागे में अब उपयोग कर रहा है द्वारा निर्धारित किया गया की जरूरत है,

यानी मैं में चयनित भाषा जानने की जरूरत टास्कबार भाषा स्विचर:

language switcher

पी एस वर्तमान संस्कृति ऑन-स्क्रीन कीबोर्ड एप्लिकेशन में उपयोग की जाने वाली भाषा को वापस लाती है, जो कि मैं देख रहा हूं ..

उत्तर

5

समाधान अग्रभूमि विंडो के लिए कीबोर्ड लेआउट प्राप्त करना था, और उसके बाद इसे स्क्रीन कीबोर्ड पर लागू करना था , और हमेशा की तरह मायनों में भाषा के लिए जाँच ..

  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

आप भी WMI का उपयोग कर प्राप्त कर सकते हैं:

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); 
      } 
     } 
    } 
} 
संबंधित मुद्दे