Winapi 强制将GetKeyNameText转换为英语
Win32函数GetKeyNameText将提供当前输入区域设置中键盘键的名称 从MSDN: 密钥名称将根据当前文件的布局进行翻译 安装了键盘,因此该功能可能会为用户提供不同的结果 不同的输入区域设置 是否可以在短时间内强制输入区域设置?或者GetKeyNameText还有其他方法可以始终以英语返回名称吗?更新:此答案无效。它实际上修改了用户的键盘设置。这似乎是Windows版本之间的行为更改Winapi 强制将GetKeyNameText转换为英语,winapi,keyboard-shortcuts,locale,Winapi,Keyboard Shortcuts,Locale,Win32函数GetKeyNameText将提供当前输入区域设置中键盘键的名称 从MSDN: 密钥名称将根据当前文件的布局进行翻译 安装了键盘,因此该功能可能会为用户提供不同的结果 不同的输入区域设置 是否可以在短时间内强制输入区域设置?或者GetKeyNameText还有其他方法可以始终以英语返回名称吗?更新:此答案无效。它实际上修改了用户的键盘设置。这似乎是Windows版本之间的行为更改 将键盘布局切换为英语需要很长时间。同样,切换布局对我来说也不起作用。 CString csLangId
将键盘布局切换为英语需要很长时间。同样,切换布局对我来说也不起作用。
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 );