C ++ / Win32查找所有键盘输入语言?

时间:2012-08-07 09:12:33

标签: c++ winapi input localization locale

我想找到键盘的所有输入语言,你可以用LEFT ALT + SHIFT切换它们。

我可以使用win API获取默认语言环境和已安装/支持的语言环境,但我找不到任何关于键盘输入语言环境的信息。

1 个答案:

答案 0 :(得分:9)

您必须使用GetKeyboardLayoutList功能。

例如,要在控制台中输出所有键盘输入语言,您可以使用以下代码:

UINT uLayouts;
HKL  *lpList = NULL;
wchar_t szBuf[512];

uLayouts = GetKeyboardLayoutList(0, NULL);
lpList   = (HKL*)LocalAlloc(LPTR, (uLayouts * sizeof(HKL)));
uLayouts = GetKeyboardLayoutList(uLayouts, lpList);

for(int i = 0; i < uLayouts; ++i)
{
    GetLocaleInfo(MAKELCID(((UINT)lpList[i] & 0xffffffff), 
    SORT_DEFAULT), LOCALE_SLANGUAGE, szBuf, 512);
    wprintf(L"%s\n", szBuf);
    memset(szBuf, 0, 512);
}

if(lpList)
    LocalFree(lpList);