GetKeyState:

函数功能:该函数检取指定虚拟键的状态。该状态指定此键是UP状态,DOWN状态,还是被触发的(开关每次按下此键时进行切换)。

函数原型:SHORT GetKeyState(int nVirtKey);

函数:

nVrtKey:定义一虚拟键。若要求的虚拟键是字母或数字(A~Z,a~z或0~9),nVirtKey必须被置为相应字符的ASCII码值,对于其他的键,nVirtKey必须是一虚拟键码。若使用非英语键盘布局,则取值在ASCIIa~z和0~9的虚拟键被用于定义绝大多数的字符键。例如,对于德语键盘格式,值为ASCII0(OX4F)的虚拟键指的是"0"键,而VK_OEM_1指"带变音的0键"

返回值:返回值给出了给定虚拟键的状态,状态如下:

若高序位为1,则键处于DOWN状态,否则为UP状态。

若低序位为1,则键被触发。例如CAPS LOCK键,被找开时将被触发。若低序位置为0,则键被关闭,且不被触发。触发键在键盘上的指示灯,当键被触发时即亮,键不被触发时即灭。

备注:当给定线程从它的消息队列中读键消息时,该函数返回的键状态发生改变。该状态井不反映与硬件相关的中断级的状态。使用SetKeyboardState可获取这一信息。

欲检取所有虚拟键状态信息,可以使用SetKeyboardState函数。

应用程序可以使用虚拟键码常数VK_SHIFT,VK_CONTROL和VK_MENU作为nVirtKey参数的值。它给出shift,ctrl或alt键的值而不区分左右键,应用程序也可以使用如下的虚拟键码常数作nVirtKey的值来区分前述键的左键、右键的情形。

VK_LSHIFT,VK_RSHIFT;VK_LCONTROL,VK_RCONTROL;VK_LMENU,VK_RMENU

仅当应用程序调用GetKeyboardSlate,SetKeyboardState,GetAsyncKeystate;GetKeyState和MapVirtualKey函数时,才可用这些区分左右键的常数。

Windows CE:GetKeyState函数仅能用于检查如下虚拟键的DOWN状态。

VK_LSHIFT,VKRSHIFT,VK_LCONTROL;VK_RCONTROL;VK_LMENU,VK_RMENU

GetKeyState函数只能用于检查VK_CAPITAL虚拟键的触发状态。

速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.I及以上版本;头文件:winuser.h;库文件:user32.lib。

GetAyncKeystate

函数功能:该函数用于确定函数被调用时,相应按键是处于按下状态,还是处于弹起状态;并且按下此键前否调用过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。

原文地址:http://www.esk365.com/zxsc/prg/winapia/

Win32 GetKeyState和getasynckeystate相关推荐

  1. GetKeyState、GetAsyncKeyState、GetKeyboardState函数的区别:

    GetKeyState.GetAsyncKeyState.GetKeyboardState函数的区别: 1.BOOL GetKeyboardState( PBYTE lpKeyState );获得所有 ...

  2. GetKeyState、GetAsyncKeyState、GetKeyboardState函数的区别 以及虚拟键值

    GetKeyState.GetAsyncKeyState.GetKeyboardState函数的区别: 1.BOOL GetKeyboardState( PBYTE lpKeyState );获得所有 ...

  3. GetKeyState和GetAsyncKeyState到底有什么区别?

    经常有朋友问起,GetKeyState和GetAsyncKeyState到底有什么区别,分别应该在什么场景下使用. 那么,今天我就来翻译翻译,什么叫惊喜. GetKeyState会返回虚拟按键的状态. ...

  4. GetKeyState和GetAsyncKeyState的区别

    刚接触这个两个函数的时候,我也特别困惑,不知道二者有什么差别,看了msdn之后,也不是很清楚.遍寻web,才略有了解,分享给大家. 简单的说. GetAsyncKeyState就是检查在调用该函数时, ...

  5. GetKeyState()和GetAsyncKeyState()的区别

    使用::GetKeyState()返回一个short型的数,short型是16位有符号的数据类型,如果要查询的键被按下,返回值最高位被置1,则这个数表示负数,所以可以用<0或>0来判断. ...

  6. 按键判断之GetKeyState 和 GetAsyncKeyState 区别

    #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) #define KEYUP(vk_code) ( ...

  7. GetKeyState 和 GetAsyncKeyState 区别

    使用::GetKeyState()返回一个short型的数,short型是16位有符号的数据类型,如果要查询的键被按下,返回值最高位被置1,则这个数表示负数,所以可以用<0或>0来判断. ...

  8. Windows GetKeyState 和 GetAsyncKeyState 区别

    #define KEYDOWN(vk_code) ((GetAsyncKeyState(vk_code) & 0x8000) ? 1 : 0) #define KEYUP(vk_code) ( ...

  9. GetKeyState(), GetAsyncKeystate(), GetKeyboardSlate()解析

    原文链接: https://www.cnblogs.com/llguanli/p/8427384.html GetKeyState.GetAsyncKeyState.GetKeyboardState函 ...

最新文章

  1. css里dom宽度,2019-08-23 DOM中各种高度、宽度
  2. Spring学习五(JDBC支持)
  3. 转:关于CCDISK的优化
  4. linux达人养成计划学习笔记(四)—— 压缩命令
  5. java 输出脉冲信号_一种使用SOC精确控制脉冲的方法
  6. nodejs安装express框架
  7. ZooKeeper 典型的应用场景
  8. JDBCUtils——C3P0
  9. wp7开发第一课:软件生命周期(其一)
  10. 仿链家地图找房_iOS地图找房、周边(仿链家、安居客等地图找房)-高德地图-OC...
  11. 买不到的数目(最大不能组合的数)
  12. 如何自动更新WordPress盐
  13. 为什么要选择云原生数据库
  14. js中的循环(跳过(continue)和中断执行(break))
  15. Go语言使用百度翻译api
  16. Memos:V-REP/Coppeliasim视觉传感器的使用
  17. 最大似然估计总结笔记
  18. CouchDB的简单使用
  19. 生活总是不经意给你开个玩笑_你在开玩笑的故事吗
  20. ImageJ Nikon_尼康“小世界”竞赛的获胜者揭示了微小的彩色世界|尼康|小世界|nikon|显微镜...

热门文章

  1. java 0xff00_ 0xFF 与  0xFF00 的作用
  2. 2021.5.10笔记 内部类
  3. error: stray ‘\302’ in program/error: stray ‘\240’ in program解决方法
  4. android教育游戏设计方案,一个简单Android游戏的设计 详细设计
  5. 永久删除的文件如何恢复?只需4个步骤
  6. Android常用透明度代码
  7. W32/Pate.a 病毒处理小记
  8. NoSQL 入门和概述
  9. 如何下载 blob 加密https://视频
  10. [转载]摩托罗拉为什么没落