GetKeyboardState в неактивной форме? - VB

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

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

Как сделать, чтобы форма пряталась, появлялась (Visible) под управлением клавиши, например Caps Lock? Пробовал "сунуть" GetKeyboardState в Timer, - но, если форма не активна (или уже не видима) не работает! Помогите! Заранее благодарю.

Решение задачи: «GetKeyboardState в неактивной форме?»

textual
Листинг программы
Declare Function SetTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long) As Long
Declare Function KillTimer Lib "user32" (ByVal hwnd As Long, ByVal nIDEvent As Long) As Long
Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Global Cnt As Long, sSave As String, sOld As String, Ret As String
Dim Tel As Long
Function GetPressedKey() As String
    For Cnt = 32 To 128
        'Get the keystate of a specified key
        If GetAsyncKeyState(Cnt) <> 0 Then
            GetPressedKey = Chr$(Cnt)
            Exit For
        End If
    Next Cnt
End Function
Sub TimerProc(ByVal hwnd As Long, ByVal nIDEvent As Long, ByVal uElapse As Long, ByVal lpTimerFunc As Long)
    Ret = GetPressedKey
    If Ret <> sOld Then
      If Ret = "H" Then
          Form1.Hide
      End If
        If Ret = "S" Then
           Form1.Show
        End If
        sOld = Ret
    End If
End Sub

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


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

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

14   голосов , оценка 4 из 5