@msdn=http://search.microsoft.com/search/results.aspx?qu=$$$ @pinvoke=http://pinvoke.net/$$$.htm Summary: The GetKeyboardLayout API !!!!C# Signature: [DllImport("user32.dll")] static extern IntPtr GetKeyboardLayout(uint idThread); !!!!VB.NET Signature: Public Declare Function GetKeyboardLayout Lib "user32" (ByVal idThread As UInteger) As IntPtr !!!!User-Defined Types: None. !!!!Notes: None. !!!!Tips & Tricks: Please add some! !!!!Sample Code: ///For using "imm32.dll"'s functions. const int GCL_REVERSECONVERSION = 0x0002; [DllImport("Imm32.dll")] public static extern IntPtr ImmGetContext(IntPtr hWnd); [DllImport("User32.dll")] public static extern IntPtr GetKeyboardLayout(int idThread); [DllImport("Imm32.dll")] public static extern int ImmGetConversionList( IntPtr hKL, IntPtr hIMC, string lpSrc, IntPtr lpDst, int dwBufLen, int uFlag ); [DllImport("Imm32.dll")] public static extern bool ImmReleaseContext(IntPtr hWnd,IntPtr hIMC); [StructLayout(LayoutKind.Sequential)] public class CANDIDATELIST { public int dwSize; public int dwStyle; public int dwCount; public int dwSelection; public int dwPageStart; public int dwPageSize; public int dwOffset; } public string[] GetReverseConversion(string AText) { string[] strList = null; if (AText.Length > 0) { IntPtr hIMC = ImmGetContext(this.Handle); IntPtr hKL = GetKeyboardLayout(0); int dwSize = ImmGetConversionList(hKL,hIMC,AText,IntPtr.Zero,0,GCL_REVERSECONVERSION); if (dwSize > 0) { IntPtr BufList = Marshal.AllocHGlobal(dwSize); try { ImmGetConversionList(hKL,hIMC,AText,BufList,dwSize,GCL_REVERSECONVERSION); CANDIDATELIST list = new CANDIDATELIST(); Marshal.PtrToStructure(BufList,list); byte[] buf = new byte[dwSize]; Marshal.Copy(BufList,buf,0,dwSize); Marshal.FreeHGlobal(BufList); int os = list.dwOffset; string str = System.Text.Encoding.Default.GetString(buf,os,buf.Length-os-3); char[] par = "\0".ToCharArray(); strList = str.Split(par); } finally { ImmReleaseContext(this.Handle,hIMC); } } } return strList; } ///The example of use of the above code private void button1_Click(object sender, System.EventArgs e) { listBox1.Items.Clear(); listBox1.Items.AddRange(GetReverseConversion(textBox1.Text)); } !!!!Alternative Managed API: Do you know one? Please contribute it! Documentation: GetKeyboardLayout@msdn on MSDN
Edit user32.getkeyboar...
You do not have permission to change this page. If you feel this is in error, please send feedback with the contact link on the main page.