你不要简单地检测GetAsyncKeyState的返回值是否非零,因为如果在这个函数运行前指定的键已经被按过,则这个函数的返回值的位0为1;如果这个键目前处于按下状态,则位15为1。所以你检测位15是否为1就可以知道这个键是曾经被按过还是正在被按着:
If (GetAsyncKeyState(VK_SPACE) And &H8000) = &H8000 Then Call 事件A
还有一个API函数GetKeyState是只检测按键的当前状态的,但仍然要检测位15是否为1(位0为1表示开关键打开,即CapsLock、NumLock、ScrollLock键):
If (GetKeyState(VK_SPACE) And &H8000) = &H8000 Then Call 事件A