鱼C论坛

 找回密码
 立即注册
查看: 2990|回复: 0

[API档案] GetKeyboardState

[复制链接]
发表于 2016-5-24 03:04:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
注:本文档由 n0noper 翻译,小甲鱼校对。

原文链接 -> 传送门

函数功能:

GetKeyboardState 函数用于拷贝 256 个虚拟键的状态到指定的缓冲区中。


API 函数原型:

注释:_Out_ 说明该参数是输出的。
  1. BOOL WINAPI GetKeyboardState(
  2.   _Out_ PBYTE lpKeyState
  3. );
复制代码


参数解析:

参数 含义
lpKeyState指向包含 256 字节的数组,用来接收每一个虚拟键的状态值


返回值:

1. 如果函数执行成功,返回值为非 0;

2. 如果函数执行失败,返回值为 0。

获取更多错误信息,请调用 GetLastError 函数。


备注:

1. 应用程序可以调用该函数来接收当前所有虚拟键的状态。当键盘消息被一个线程移出消息队列时该状态变化;当键盘消息被发送到线程消息队列时,或者键盘消息被发送到其他线程或接收到其他线程消息队列中的键盘消息时,该状态不变化。(异常:通过调用 AttachThreadInput 函数连接的线程共享同一键盘状态)

2. 当函数返回时,参数 lpKeyState 包含的数组的每一个元素都指向虚拟键的状态。如果最高标置位为 1,表示该键按下;否则,表示抬起。如果键为切换键,例如 CAPS LOCK,最低标志位为 1 时表示键处于切换状态,最低标志位为 0 时表示键处于非切换状态。最低标志位对于非切换键是没有意义的。一个切换键被按下后被称为处于切换状态。一个切换键在键盘上的指示灯(如果有)将会在该键处于切换状态时被打开,在处于非切换状态时将会被关闭。

3. 为了获取某一个键的状态信息,调用 GetKeyState 函数。为了获取某一个键的当前状态无论对应的键盘消息是否已经从消息队列中检索到,使用 GetAsyncKeyState 函数。

4. 应用程序可以在 lpKeyState 参数指向的数组中使用虚拟键码常量 VK_SHIFT, VK_CONTROL 和 VK_MENU 作为索引。这将给出 SHIFT, CTRL 或 ALT 键的忽略左右的状态。应用程序也可以使用以下虚拟键码常量作为索引来获取区分左右的这些键的实例。

  • VK_LSHIFT
  • VK_RSHIFT
  • VK_LCONTROL
  • VK_RCONTROL
  • VK_LMENU
  • VK_RMENU

这些区分左右的常量仅在 GetKeyboardState, SetKeyboardState, GetAsyncKeyState, GetKeyStateMapVirtualKey 函数中才有效。

需求:

Minimum supported client Windows 2000 专业版[仅桌面应用程序]
Minimum supported server Windows 2000 服务器版 [仅桌面应用程序]
Header Winuser.h (包含于 Windows.h)
Library User32.lib
DLL User32.dll


【API档案】版权归鱼C工作室(www.fishc.com)所有,转载请注明来源。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-1 02:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表