Win32函数GetKeyNameText将在当前输入语言环境中提供键盘键的名称。
来自MSDN:
根据当前的布局翻译键名 安装键盘,因此功能可能会给出不同的结果 不同的输入区域。
是否可以在短时间内强制输入区域设置?或者是GetKeyNameText的另一种替代方法,它总是以英语返回名称吗?
答案 0 :(得分:2)
更新 :此答案无效。它实际上修改了用户的键盘设置。这似乎是Windows版本之间的行为更改。
CString csLangId;
csLangId.Format( L"%08X", MAKELANGID( LANG_INVARIANT, SUBLANG_NEUTRAL ) );
HKL hLocale = LoadKeyboardLayout( (LPCTSTR)csLangId, KLF_ACTIVATE );
HKL hPrevious = ActivateKeyboardLayout( hLocale, KLF_SETFORPROCESS );
// Call GetKeyNameText
ActivateKeyboardLayout( hPrevious, KLF_SETFORPROCESS );
UnloadKeyboardLayout( hLocale );