getasynckeystate(GetAsyncKeyState的问题,求看看怎么回事儿)
本文目录
GetAsyncKeyState的问题,求看看怎么回事儿
你不要简单地检测GetAsyncKeyState的返回值是否非零,因为如果在这个函数运行前指定的键已经被按过,则这个函数的返回值的位0为1;如果这个键目前处于按下状态,则位15为1。换句话说,GetAsyncKeyState这个函数可以返回键盘上某个键的两种实时状态:“曾经被按过”以及“正在被按下”!而这两种状态都会使GetAsyncKeyState的返回值非零,因此用If GetAsyncKeyState(vbKeyA) Then来判断A键是否被按下是不严密的,因为在你的程序启动之前,A键很可能已经被按过了,这种情况下你的程序一启动,GetAsyncKeyState(vbKeyA)就是为“真”的!因此你要检测返回值的位15是否为1才能够精确判断这个键是不是正在被按着:If (GetAsyncKeyState(vbKeyA) And &H8000) = &H8000 Then另外,还有一个API函数GetKeyState是只检测按键的当前状态的(也就是说它不检测这个键是否“曾经被按过”),但仍然要检测位15是否为1(位0为1表示开关键打开,即CapsLock、NumLock、ScrollLock键):If (GetKeyState(vbKeyA) And &H8000) = &H8000 Then
GetAsyncKeyState()函数的意思
#define 。。。 是调用在 动态Library 的 GetAsybKeyState 函数, 该函数检查按键 VK_CODE 有没有被按动过。 KEY_DOWN() if ( KEY_DOWN 。。。 在用户程式内, 在适当的位置 (如 LOOP 的最前/后) 呼叫KEY_DOWN (其实最终是调用 GetAsyKeyState), 看看按键 VK_CODE 有否被按动过, 有的话, 把变量 SPEED 变为 SPEED * 4
使用GetAsyncKeyState来设置组合键,就是热键的设置
【VB声明】 Private Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer 【说明】 判断函数调用时指定虚拟键的状态 【返回值】 Long,自对GetAsyncKeyState函数的上一次调用以来,如键已被按过,则位0设为1;否则设为0。如键目前处于按下状态,则位15设为1;如抬起,则为0。微软的win32手册指出:倘若输入焦点从属于与调用函数的输入线程不同的另一个输入线程,则返回值为0(例如,一旦另一个程序拥有焦点,则它应返回零)。证据显示,函数实际是在整个系统的范围内工作的 【备注】 如指定了VK_LBUTTON 或 VK_RBUTTON,按钮的状态就会根据实际的按钮报告——无论是否曾用SwapMouseButton函数对鼠标的位置进行了交换。win32提供了额外的一些虚拟键码,比如VK_LSHIFT 和 VK_RSHIFT,以便在两个完全一样的键中区分出左右(也包括Ctrl 和 Alt) 【参数表】 vKey ---- Long,欲测试的虚拟键的键码 用循环,判断出每个键的状态
更多文章:
快捷方式病毒专杀工具(急求 1K快捷方式病毒专杀,工具 要求:病毒要杀掉,但是不能吧文件夹也杀掉)
2024年7月4日 05:25
屠龙战神礼包激活码(奇迹之剑可以免费领的礼包码,激活码有哪些)
2023年12月12日 14:10
卓大师刷机专家pc版下载(在电脑上怎么备份手机整个系统或备份成刷机包Zip那种)
2024年9月9日 23:55
新战国英雄炼魂阵在哪里进?新战国英雄骑士怎样加点最好(怎样分配力量和体质)骑士pk有什么技巧骑弓好还是骑战好
2024年6月28日 17:07
手机电商产品制作软件哪个好?现在还有卖安娜苏的梦境成真香水吗
2024年7月14日 07:10
绝地反击官网(绝地反击登陆不上去,从官网光宇用户登录能登陆上去,但进游戏就说账号或密码不对,我该怎么处理啊!)
2024年4月20日 18:25