Q:我想在代碼中就能確定大寫鎖定鍵或者數字鍵盤鍵的狀態,以便適當地提醒用戶這些鍵已經開啟或者應該開啟,怎么編寫代碼?
A:可以借助于Windows API來取得鍵盤相應鍵的狀態,代碼如下:
‘API聲明
Private Declare Function GetKeyState Lib “user32” (ByVal nVirtKey As Long) As Integer
‘定義鍵編碼常量
‘大寫鎖定鍵編碼常量
Private Const GetCapsLock = 2
‘數字鍵盤鍵編碼常量
Private Const GetNumLock = 144
‘獲取大寫鎖定鍵狀態
Public Function CapsLock() As Boolean
CapsLock = KeyState(GetCapsLock)
End Function
‘獲取數字鍵盤鍵狀態
Public Function NumLock() As Boolean
NumLock = KeyState(GetNumLock)
End Function
‘獲取指定鍵狀態
Private Function KeyState(lKey As Long) As Boolean
KeyState = CBool(GetKeyState(lKey))
End Function
‘測試大寫鎖定鍵狀態
Sub test()
If CapsLock Then
MsgBox “注意!你現在的大寫鎖定鍵是開啟的.”, vbExclamation
Else
MsgBox “大寫鎖定未開啟.”
End If
End Sub
運行上述代碼中的test過程,如果開啟了大寫狀態,那么會得到下所示的消息:
我們可以在程序中加入上述代碼來測試相應鍵的狀態。例如,在要求用戶輸入密碼時,如果開啟了大寫鎖定鍵,則可以提示用戶大寫鎖定鍵已開啟的信息,以免用戶將小寫字母輸成了大寫字母。