天天看點

鍵盤按下某鍵 停止運作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  說明鍵是按下的狀态