Obs:
o símbolo
indica que o código foi "quebrado" em mais linhas para
que possa ser exibido na tela, sendo que deve constar em apenas uma
linha no programa.
A
API do Windows possui várias funções que permitem
o controle e verificação do teclado. Uma delas nos permite
verificar qual o estado se uma determinada tecla, ou seja, se ela foi
pressionada ou não.
Neste pequeno projeto vamos ver como utilizar esta função
para verificar o estado (on/off) de quatros teclas: CapsLock,
ScrollLock, Insert e NumLock.
A função que iremos utilizar é a GetKeyState.
Ela precisa apenas de um parâmetro, que é o código
da tecla a ser verificada. Retorna um valor, que pode ser 0, indicando
que a tecla está ligada, ou -1.
O projeto é constituído de apenas um formulário,
que contém quatro controles Label, para exibir as informações,
e um controle Timer, cuja propriedade Interval foi definida para 150.
Dessa forma, o estado do teclado é constantemente verificado
pelo programa.

Declaração
das constantes e da função a ser usada
Você
deve declarar as constantes, bem como a função, na parte
de declarações globais do form, como segue abaixo:
Private Const VK_CAPITAL = &H14 'Caps Lock
Private Const VK_NUMLOCK = &H90 'Num Lock
Private Const VK_SCROLL = &H91 'Scroll Lock
Private Const VK_INSERT = &H2D 'Insert
Private Declare Function GetKeyState Lib "user32"
(ByVal nVirtKey As Long) As Integer
No
evento Load do Form colocamos o código que efetivamente faz a
varredura do teclado:
Private Sub Form_Load()
Dim keyLock As Long
lbcCapsLock.FontBold = True
lbcNumLock.FontBold = True
lbcScrollLock.FontBold = True
lbcInsert.FontBold = True
'Verifica estado da Caps Lock
keyLock = GetKeyState(VK_CAPITAL)
If keyLock Then
lbcCapsLock.Caption = "Caps Lock On"
lbcCapsLock.ForeColor = RGB(0, 0, 255)
Else
lbcCapsLock.Caption = "Caps Lock Off"
lbcCapsLock.ForeColor = RGB(255, 0, 0)
End If
'Verifica estado da Num Lock
keyLock = GetKeyState(VK_NUMLOCK)
If keyLock Then
lbcNumLock.Caption = "Num Lock On"
lbcNumLock.ForeColor = RGB(0, 0, 255)
Else
lbcNumLock.Caption = "Num Lock Off"
lbcNumLock.ForeColor = RGB(255, 0, 0)
End If
'Verifica estado da Scroll Lock
keyLock = GetKeyState(VK_SCROLL)
If keyLock Then
lbcScrollLock.Caption = "Scroll Lock On"
lbcScrollLock.ForeColor = RGB(0, 0, 255)
Else
lbcScrollLock.Caption = "Scroll Lock Off"
lbcScrollLock.ForeColor = RGB(255, 0, 0)
End If
'Verifica estado da tecla Insert
keyLock = GetKeyState(VK_INSERT)
If keyLock Then
lbcInsert.Caption = "Insert On"
lbcInsert.ForeColor = RGB(0, 0, 255)
Else
lbcInsert.Caption = "Insert Off"
lbcInsert.ForeColor = RGB(255, 0, 0)
End If
End Sub
Para
que o programa verifique constantemente o teclado, foi colocado, no
evento Timer do controle Timer, uma chamada ao evento Form_Load. Assim,
as informações são constantemente atualizadas.