# GetKeyVK

检索按键的虚拟键码.

    VK := GetKeyVK(KeyName)

## 参数

KeyName

  类型: 字符串

  按键列表中的任意单个字符或一个按键的名称. 例如: B, 5, LWin, RControl, Alt, Enter, Escape.

  或者, 可以指定显式虚拟键码(如 vkFF), 或显式扫描码(如 sc01D), 或 VK 和 SC 的组合(按该顺序, 如 vk1Bsc001). 请注意, 这些代码必须是十六进制的.

## 返回值

类型: 整数

函数返回指定按键的虚拟键码, 如果按键无效或没有虚拟键码, 则返回 0.

## 备注

在用 Hotkey 或 GetKeyState 等内置函数使用虚拟键码之前, 必须首先将其转换为十六进制格式, 例如使用 `Format("vk{:X}", vk_code)`. 相比之下, 通过 DllCall 调用的外部函数通常直接使用数字值.

如果 KeyName 对应于扫描码或单个字符, 该函数将通过调用特定的系统函数(该函数引用脚本当前的键盘布局) 来将该值映射到虚拟键码. 这可能与活动窗口的键盘布局不同.

如果 KeyName 是 A-Z 范围内的 ASCII 字母, 并且在键盘布局中没有映射, 则使用 vk41-vk5A 范围内相应的虚拟键作为备用.

有些键盘布局没有定义虚拟键码与扫描码的 1:1 映射. 当可能有多种解释时, 底层系统函数很可能根据键盘布局中定义的顺序选择一种, 这并不总是最常见或最合理的选择.

## 相关

GetKeySC, GetKeyName, GetKeyState, Key List, Format

## 示例

检索并报告 `Esc` 的十六进制虚拟键码.

    vk_code := GetKeyVK("Esc")
    MsgBox Format("vk{:X}", vk_code) ; 报告 vk1B

dftg