Jak wykryć, czy mamy wciśnięty klawisz Caps Lock?

przez | 2024-01-26

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

2 komentarze do „Jak wykryć, czy mamy wciśnięty klawisz Caps Lock?

  1. krystian330q

    A jak sobie poradzić z Scroll Lock?? Bo Num Lock robi się analogicznie, ale stała vbKeyScrollLock nie istnieje!

    Odpowiedz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.