GetKeyState 函数 (winuser.h)

检索指定虚拟键的状态。 状态指定键是向上、向下还是切换(打开、关闭-每次按下键时交替)。

Syntax

SHORT GetKeyState(
  [in] int nVirtKey
);

参数

[in] nVirtKey

类型:int

虚拟键。 如果所需的虚拟键是字母或数字(A 到 Z、a 到 z 或 0 到 9), 则必须将 nVirtKey 设置为该字符的 ASCII 值。 对于其他密钥,它必须是虚拟键代码。

如果使用非英语键盘布局,则使用区域 ASCII A 到 Z 和 0 到 9 的值的虚拟键来指定大多数字符键。 例如,对于德语键盘布局,值 ASCII O(0x4F)的虚拟键是指“o”键,而VK_OEM_1指“o with umlaut”键。

返回值

类型: SHORT

返回值指定指定虚拟键的状态,如下所示:

  • 如果高阶位为 1,则键已关闭;否则,它已启动。
  • 如果低序位为 1,则切换键。 如果打开了密钥,例如 CAPS LOCK 键,则会切换该键。 如果低序位为 0,则键处于关闭状态并取消键。 当切换键时,键盘上的切换键指示器(如果有)将处于打开状态,当键被取消切换时关闭。

注解

从此函数返回的密钥状态会随着线程从其消息队列中读取密钥消息而更改。 状态不反映与硬件关联的中断级别状态。 使用 GetAsyncKeyState 函数检索该信息。

应用程序调用 GetKeyState 以响应键盘输入消息。 此函数在生成输入消息时检索密钥的状态。

若要检索所有虚拟键的状态信息,请使用 GetKeyboardState 函数。

应用程序可以使用 虚拟键代码 常量 VK_SHIFTVK_CONTROLVK_MENU 作为 nVirtKey 参数的值。 这将提供 SHIFT、Ctrl 或 ALT 键的状态,而无需区分左右键。 应用程序还可以使用以下虚拟键代码常量作为 nVirtKey 的值来区分这些键的左右实例:

VK_LSHIFT VK_RSHIFT VK_LCONTROL VK_RCONTROLVK_LMENUVK_RMENU这些左右区分常量只能通过 GetKeyboardState、SetKeyboardStateGetAsyncKeyState、GetKeyStateMapVirtualKey 函数提供给应用程序。

例子

有关示例,请参阅 显示键盘输入

要求

Requirement 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows操作系统
Header winuser.h (包括 Windows.h)
Library User32.lib
DLL User32.dll

另请参阅