GetKeyNameTextA 函数 (winuser.h)

检索表示键名称的字符串。

语法

int GetKeyNameTextA(
  [in]  LONG  lParam,
  [out] LPSTR lpString,
  [in]  int   cchSize
);

参数

[in] lParam

类型:LONG

要处理的键盘消息的第二个参数(如 WM_KEYDOWN)。 该函数解释 lParam中的以下位位置。

意义
16-23 扫描代码。 该值取决于 OEM。
24 指示键是扩展键,例如在增强型 101 或 102 键键盘上显示的右键和 Ctrl 键。 如果它是扩展键,则值为 1;否则为 0。
25 “不在乎”位。 调用此函数的应用程序设置此位,以指示该函数不应区分左右 Ctrl 和 SHIFT 键,例如。

有关详细信息,请参阅 击键消息标志

[out] lpString

类型:LPTSTR

将接收密钥名称的缓冲区。

[in] cchSize

类型:int

键名称的最大长度(以字符为单位),包括终止 null 字符。 (此参数应等于 lpString 参数指向的缓冲区的大小。

返回值

类型:int

如果函数成功,则将以 null 结尾的字符串复制到指定的缓冲区中,返回值是字符串的长度(以字符为单位)而不是计算终止 null 字符。

如果函数失败,则返回值为零。 若要获取扩展的错误信息,请调用 GetLastError

言论

键名字符串的格式取决于当前的键盘布局。

键盘布局维护名称列表,其名称长度超过单个字符的键的字符串形式。 键名称根据当前活动键盘布局转换,因此函数可能会为不同的 键盘布局返回不同的结果。

字符键的名称是字符本身。 死键的名称已完全拼写。

映射到“A”的字符键。Z' 虚拟密钥代码 转换为 <U+0041 拉丁文大写字母 A>..无论当前键盘布局如何,<U+005A 拉丁文大写字母 Z> 字符。 在这种情况下,请使用 ToUnicodeToUnicodeEx 方法获取相应按键的字符。

此方法可能无法正常工作,某些 键盘布局 生成多个字符(如连字)或单键按下的补充 Unicode 字符。

winuser.h 标头将 GetKeyNameText 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 winuser.h (包括 Windows.h)
User32.lib
DLL User32.dll

另请参阅

键盘输入

键盘布局

键盘布局示例

ToUnicode

ToUnicodeEx