天天看点

键盘按下某键 停止运行java_实现按下一个键执行操作/松开一个键停止操作

执行的结果和预期的不一样?

看到执行结果,小编笑不出来了,这样写当第一次按下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  说明键是按下的状态