VkKeyScanExA 函数 (winuser.h)

将字符转换为相应的虚拟键代码和偏移状态。 该函数使用输入语言和由输入区域设置标识符标识的物理键盘布局转换字符。

语法

SHORT VkKeyScanExA(
  [in] CHAR ch,
  [in] HKL  dwhkl
);

参数

[in] ch

类型: TCHAR

要转换为虚拟键代码的字符。

[in] dwhkl

类型: HKL

用于转换字符的输入区域设置标识符。 此参数可以是 以前由 LoadKeyboardLayout 函数返回的任何输入区域设置标识符。

返回值

类型: SHORT

如果函数成功,则返回值的低序字节包含虚拟键代码,高阶字节包含移位状态,可以是以下标志位的组合。

返回值 说明
1
按下任一 SHIFT 键。
2
按下任一 CTRL 键。
4
按下任一 ALT 键。
8
按下了 Hankaku 键
16
由键盘布局驱动程序) 定义的保留 (。
32
由键盘布局驱动程序) 定义的保留 (。
 

如果函数找不到转换为传递的字符代码的键,则低序字节和高阶字节都包含 –1。

注解

输入区域设置标识符是比键盘布局更广泛的概念,因为它还可以包含语音转文本转换器、输入法编辑器 (输入法) 或任何其他输入形式。

对于使用右 ALT 键作为移位键的键盘布局 (例如,法语键盘布局) ,移位状态由值 6 表示,因为右侧 ALT 键在内部转换为 CTRL+ALT。

将忽略数字键盘 (VK_NUMPAD0 到VK_DIVIDE) 的转换。 此函数仅用于将字符转换为main键盘部分的击键。 例如,字符“7”将转换为VK_7,而不是VK_NUMPAD7。

VkKeyScanEx 由使用 WM_KEYUPWM_KEYDOWN 消息发送字符的应用程序使用。

注意

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

要求

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

另请参阅