大家好,小东方来为大家解答以上的问题。getasynckeystate用法,getasynckeystate这个很多人还不知道,现在让我们一起来看看吧!
1、你不要简单地检测GetAsyncKeyState的返回值是否非零,因为如果在这个函数运行前指定的键已经被按过,则这个函数的返回值的位0为1;如果这个键目前处于按下状态,则位15为1。
2、换句话说,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。
本文到此分享完毕,希望对大家有所帮助。