日期:2014-05-17 浏览次数:21091 次
[DllImport("user32.dll")] public static extern int GetKeyboardLayoutList(int size, [Out, MarshalAs(UnmanagedType.LPArray)] IntPtr[] hkls);
[DllImport("imm32")] public static extern uint ImmGetDescription(IntPtr hKL, StringBuilder lszDescription, uint uBufLen);
[DllImport("imm32")] public static extern uint ImmGetIMEFileName(IntPtr hKL, StringBuilder lpszFileName, uint uBufLen);
static void Main(string[] args)
{
IntPtr[] hkls = new IntPtr[20];
int n = GetKeyboardLayoutList(20, hkls);
Console.WriteLine("{0} layouts:", n);
for (int i = 0; i < n; i++)
{
IntPtr hkl = hkls[i];
var desc = new StringBuilder(500);
ImmGetDescription(hkl, desc, 500);
var fname = new StringBuilder(500);
ImmGetIMEFileName(hkl, fname, 500);
Console.WriteLine("{0}({1}) '{2}' ({3})", hkl.ToString("x"), (int)hkl & 0x00ffff, desc, fname);
}
}