执行的结果和预期的不一样?
看到执行结果,小编笑不出来了,这样写当第一次按下F3键放开之后,key的值一直都是F3,也就是说不管你松没松开f3键,If key <> 114 Then这一句都不会成立,WaitKey 命令可以获取你按下了什么键,但是却不能获取这个按键的一个状态。按一次、按很多次、松开了、还按着、WaitKey 命令不区分这些,它就返回一个键值。
怎么办怎么办?这时候小编脑子里飘过了很多想法,最后想到了api,通过调用api的 GetAsyncKeyState 函数( Get-得到 Async-端口 KeyState-键盘按键状态 合起来就是——获取键盘按键状态的端口) 来获取指定键的一个状态,根据获取到的状态,就能得知指定键是按下还是松开的。瞬间觉得自己又变聪明了,哦呵呵,有了想法马上实施行动,先了解下 GetAsyncKeyState 函数的声明和返回值:
GetAsyncKeyState 函数 的声明,返回值
声明
Declare Function GetAsyncKeyState Lib "user32" Alias "GetAsyncKeyState" (ByVal vKey As Long) As Integer
返回值
GetAsyncKeyState 返回值等于1 说明键已经被按过并且当前是松开的状态 GetAsyncKeyState 返回值等于0 说明键是松开的状态 GetAsyncKeyState 返回值等于- 32767 说明键是按下的状态