Как отследить NumLock или CapsLock? - VB

Узнай цену своей работы

Формулировка задачи:

Как сделать, чтобы форма появлялась и "пряталась" в зависимости от состояния Num Lock. С GetKeyboardState возникли проблемы. Очень надо, спасибо! Можно прислать по мылу removed@mail.ru

Решение задачи: «Как отследить NumLock или CapsLock?»

textual
Листинг программы
Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetKeyState Lib "user32.dll" (ByVal nVirtKey As Long) As Integer
Private Declare Function SetKeyboardState Lib "user32" (kbArray As KeyboardBytes) As Long
Private Type KeyboardBytes
     kbByte(0 To 255) As Byte
End Type
Dim ASD As Long, ASDOLD As Long, kbArray As KeyboardBytes
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_CAPITAL = &H14
' ----------------------
Private Sub Form_Load()
If GetKeyState(&H90) = 1 Then
   Me.Visible = True
Else
    Me.Visible = False
End If
Timer.Enabled = True
End Sub
' -----------------------
Private Sub Timer_Timer()
 ASD = GetAsyncKeyState(VK_NUMLOCK)
 If ASD = ASDOLD Then Exit Sub
 If ASD < 0 And ASDOLD < 0 Or ASD > 1 And ASDOLD > 1 Then Exit Sub
  ASDOLD = ASD
If ASD <> 0 Then
  If Me.Visible = False Then
       Me.Visible = True
            kbArray.kbByte(VK_NUMLOCK) = 1
            SetKeyboardState kbArray
       Me.WindowState = 0
       Me.SetFocus
   Else
       Me.Visible = False
    End If
End If
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4 из 5
Похожие ответы