當前位置:編程學習大全網 - 行動軟體 - VB GetAsyncKeyState 函數不準確,胡亂蹦字!怎麽辦?

VB GetAsyncKeyState 函數不準確,胡亂蹦字!怎麽辦?

妳不要簡單地檢測GetAsyncKeyState的返回值是否非零,因為如果在這個函數運行前指定的鍵已經被按過,則這個函數的返回值的位0為1;如果這個鍵目前處於按下狀態,則位15為1。換句話說,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

  • 上一篇:《唐宮仕女》作家張萱簡介 張萱代表作
  • 下一篇:在國外華為手機使用youtube會卡
  • copyright 2024編程學習大全網