Niedawno pisałem prosty panel logowania. Podczas testów w pewnym momencie miałem problem z zalogowaniem się do aplikacji.
Po kilku próbach wpisania „poprawnego hasła” zorientowałem się, że mam wciśnięty klawisz Caps Lock. I tutaj naszła mnie myśl – aplikacja powinna informować użytkownika, że jest wciśnięty Caps Lock. Na szczęście, da się to dość prosto zrobić w VBA.
#If VBA7 Then
Public Declare PtrSafe Function GetKeyState Lib "user32" (ByVal nVirtKey As LongPtr) As Integer
#Else
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
#End If
Function CapsLockEnabled() As Boolean
CapsLockEnabled = (GetKeyState(vbKeyCapital) = 1)
End Function
Funkcja CapsLockEnabled zwraca wartość True lub False w zależności od tego, czy jest włączony klawisz Caps Lock. Teraz w kodzie wystarczy np. podczas ładowania formularza dodać taki oto kod:
lblCAPS.Visible = CapsLockEnabled
A jak sobie poradzić z Scroll Lock?? Bo Num Lock robi się analogicznie, ale stała vbKeyScrollLock nie istnieje!
Kod klawisza ScrollLock to 145. Dziękuję za inspirację na kolejny wpis na bloga 🙂