### 函数功能

该函数用于确定函数被调用时，相应按键是处于按下状态，还是处于弹起状态；并且按下此键前否调用过GetAsyncKeystate函数。

### 函数原型

SHORT GetAyncKeystate（int vKey）；

### 参数

vKey:定义虚拟键码（若有256个虚拟键码）。欲获得更多信息，参看Virtual_Key Codes。在Windows NT中可以使用左右键区分常量来定义某些键。欲获得更多信息，参看备注部分。

### 返回值

若函数调用成功，返回值给出了自最后一次调用GetAsyncKeyStat。以来，指定的键是否处于按下状态，并且确定了该键目前是按下或是被弹起。若最高位被置为1，则键被接下：若最低位被置为1，则该键在前次调用GetAsyncKeystate以来处于被接下的状态。若另一进程或线程中的窗口拥有键盘焦点，则
返回值为零。
Windows 95：Windows 95不支持左右键区分常量，若用这些常量调用GetAsyncKeystate函数，则返回值为零。
备注：该函数支持鼠标按钮，但是，它检查的不是物理按钮映射到的逻辑按钮的状态，而实际物理按钮的状态。例如，函数调用GetAsyncKeystate（VK_LBUTTON）总是返回物理的鼠标左按钮的状态，而不管该按钮映射为逻辑上的左按钮，可以调用GetsystemMetrics（SM_SWAPBUTON）来确定系统当前物理鼠标按钮与逻辑鼠标按钮的对应关系，当鼠标按钮被左右交换后，函数返回TRUE。
可以使用虚拟键码常数VD_SHIFT，VK_CONTROL，VK_MENU作为vKey参数的值，这样给出Shift Ctrl，AIt键的状态，而不区分是左键还是右键。
Windows NT：可以使用如下的虚拟键码常数作为vKey的值来区分左右键的情况：
VK_LSHIFT VK_RSHIFT;VW_LCONTROL VK_RCONTROL；VK_LMENU VK_RMENU
这些可区分的左右键常量仅当调用GetKeyboardState，SetKeyboardstate，GetAsyncKeyState，GetKeyState和MaPViruaIKey函数时才可用。
Windows CE：GetAsyncKeyState函数支持左右虚键常量，所以定义按下左键还是右键。这些常数是VKLSHIFT，VK_RSHIFT，VK_LCONTROL，VK_RCONTROL，VK_LMENU和VK_RMENU。
在WindowsCE中返回值的最低位是无效的，应当忽略。
GetAsyncKeystate将返回当前键的状态，即使是另一进程或线程中的窗口拥有键盘焦点。
可以使用VK_LBUTTON虚拟键码常量来确定触模屏上笔尖的状态（按下/弹起）。

### 速查

Windows NT：3.1及以上版本：Windows：95及以上版本：Windows CE：1.O及以上版本；头文件：winuser.h；库文件：user32.lib。