GetAsyncKeyState函数倘若输入焦点从属于与调用函数的输入线程不同的另一个输入线程,则返回值会变为0的(例如,一旦另一个程序拥有焦点,则它应返回零)。
加个Timer时钟,然后取出前台窗口就可以 判断了。
GetAsyncKeyState这个API函数是用来检测某个键的状态的,119是F8这个键的虚拟键码,因此GetAsyncKeyState(119)就是检测F8键的当前状态的意思。
你需要使用下面的API函数,并建立一个需要检测的按键 List。把检测按键放到 Timer 里面每秒检测 30 次以上就能监听全局按键。
译文:函数GetAsyncKeyState确定在调用它时某个按键处于弹起还是按下的,以及此按键是否在上一次调用GetAsyncKeyState之后(“又”)按下过(重复也算按下)。
1、也就是说,你只要简单的判断GetAsyncKeyState的返回值是否为0,只要不为0就表示键被按下了。如果想精确点就判断一下返回值的二进制数位第0位或第15位是否为0。
2、呵呵,如果你了解GetAsyncKeyState()函数的返回值,你的问题就解决了。GetAsyncKeyState函数根据虚拟键表判断按键的类型。返回值为一个16位的二进值数,如果被按下则最高位为1,即返回-32767。
3、GetASyncKeyState()函数的作用是:确定在调用它时某个按键处于弹起还是按下的,以及此按键是否在上一次调用GetAsyncKeyState之后(“又”)按下过(重复也算按下)。
4、说明 判断函数调用时指定虚拟键的状态 返回值 Long,自对GetAsyncKeyState函数的上一次调用以来,如键已被按过,则位0设为1;否则设为0。如键目前处于按下状态,则位15设为1;如抬起,则为0。
5、GetAsyncKeyState与GetFocus/GetForegroundWindow结合使用就没问题了。
1、参数vKey是某个按键的虚拟码 (很多虚拟码跟其ASCII码数值上相等,但不代表全部。