函式功能
該函式檢取指定虛擬鍵的狀態。該狀態指定此鍵是UP狀態,DOWN狀態,還是被觸發的(開關每次按下此鍵時進行切換)。
函式原型
SHORT GetKeyState(int nVirtKey);
函式
nVrtKey:定義一虛擬鍵。若要求的虛擬鍵是字母或數字(A~Z,a~z或0~9),nVirtKey必須被置為相應
字元的
ASCII碼值,對於其他的鍵,nVirtKey必須是一
虛擬鍵碼。若使用非英語鍵盤布局,則取值在ASCIIa~z和0~9的虛擬鍵被用於定義絕大多數的字元鍵。例如,對於德語鍵盤格式,值為ASCII0(OX4F)的虛擬鍵指的是"0"鍵,而VK_OEM_1指"帶變音的0鍵"
返回值
例子:
::GetKeyState(VK_SHIFT) > 0 沒按下
::GetKeyState(VK_SHIFT) < 0被按下
返回值給出了給定虛擬鍵的狀態,狀態如下:
若高序位為1,則鍵處於DOWN狀態,否則為UP狀態。
若低序位為1,則鍵被觸發。例如CAPS LOCK鍵,被找開時將被觸發。若低序位置為0,則鍵被關閉,且不被觸發。觸發鍵在鍵盤上的指示燈,當鍵被觸發時即亮,鍵不被觸發時即滅。
應用程式可以使用GetKeyState來回響一個由鍵盤輸入產生的訊息。此時該程式獲得的是在輸入訊息生成時該鍵位的狀態。
應用程式可以使用
虛擬鍵碼常數VK_SHIFT,VK_CONTROL和VK_MENU作為nVirtKey參數的值。它給出shift,ctrl或
alt鍵的值而不區分左右鍵,應用程式也可以使用如下的虛擬鍵碼常數作nVirtKey的值來區分前述鍵的左鍵、右鍵的情形。
VK_LSHIFT,VK_RSHIFT;VK_LCONTROL,VK_RCONTROL;VK_LMENU,VK_RMENU。
Windows CE:GetKeyState函式僅能用於檢查如下虛擬鍵的DOWN狀態。
VK_LSHIFT,VKRSHIFT,VK_LCONTROL;VK_RCONTROL;VK_LMENU,VK_RMENU。
GetKeyState函式只能用於檢查VK_CAPITAL虛擬鍵的觸髮狀態。
速查:Windows NT:3.1及以上版本;Windows:95及以上版本;Windows CE:1.I及以上版本;頭檔案:
winuser.h;庫檔案:user32.lib。
GetKeyState Function
Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer
GetKeyState returns the current status of one of the keys on the keyboard. This status contains two pieces of
information: the key's toggle state and the key's pressed state. The information is put into the return value. The
toggle state is analogous to the toggle nature of the Caps Lock, Num Lock, and Scroll Lock keys, but Windows
records toggle information about every key. The toggle information is stored in bit &H80 of the return value.
The pressed state is true if the key is currently being depressed. The pressed information is stored in bit &H01
of the return value. See the example for more information on how to use the return value.
nVirtKey
The virtual key code of the key to read the status of.
Example:
' Read the status of the Enter key
x = GetKeyState(&H0D) ' Enter's virtual key code is &H0D
If (x And &H80) = &H80 Then ' check to see if it is toggled
Debug.Print "Enter is currently toggled."
End If
If (x And &H01) = &H01 Then ' check to see if it is depressed
Debug.Print "Enter is currently depressed."
End If