getKeyState 函数 (winuser.h)

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

语法

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_LSHIFTVK_RSHIFTVK_LCONTROLVK_RCONTROLVK_LMENUVK_RMENU 这些左右区分常量仅通过 GetKeyboardStateSetKeyboardStateGetAsyncKeyStateGetKeyStateMapVirtualKey 函数对应用程序可用。

示例

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

要求

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

另请参阅