' СОРС ЗА ФОРМАТА

 

' Примери за проверка на функционални бутони

 Private Sub Command0_Click()

     If CapsLockOn = True Then MsgBox "Capslock е включен", , "Пример" Else MsgBox "Capslock е изключен", , "Пример"

 End Sub

 

Private Sub Command1_Click()

     If ShiftKey = True Then MsgBox "Shift е натиснат", , "Пример" Else MsgBox "Shift не е натиснат", , "Пример"

End Sub

 

Private Sub Command2_Click()

     If AltKey = True Then MsgBox "ALT е натиснат", , "Пример" Else MsgBox "ALT не е натиснат", , "Пример"

End Sub

 

Private Sub Command3_Click()

     If CtrlKey = True Then MsgBox "CTRL е натиснат", , "Пример" Else MsgBox "CTRL не е натиснат", , "Пример"

End Sub

 

' При натискане на бутона - Клавишна комбинация за  смяна

Private Sub Command5_Click()

    KeyDown 164 'Alt долу

    KeyDown 160 'Shift долу

    KeyUp 160 'Shift горе

    KeyUp 164 'Alt горе

End Sub

 

'Таймер следящ за състоянието на бутона Ctrl

Private Sub Timer0_Timer()

    If CtrlKey = True Then ' Ако Ctrl е натиснат

        Timer1.Enabled = True ' Пускаме таймера за следене на останалите бутони

        Text2.Text = "Ctrl - Долу" ' В текстовото поле Text2 записваме, че е натиснат бутона Ctrl

    Else ' Ako не е натиснат бутона Ctrl

        Text2.Text = "Ctrl - Горе" ' Записваме в Text2, че не е натиснат

        Text1.Text = "0" ' Нулираме стойността в Тext1

        Timer1.Enabled = False ' Спираме таймера за следене на останалите бутони

    End If

End Sub

 

' Таймер за следене на останалите бутони

Private Sub Timer1_Timer()

    For j = 5 To 159 ' Чрез цикъл FOR проследяваме дали има натиснат друг бутон

        If j = 17 Then j = j + 1 ' Пропускаме 17, защото този код го има винаги когато е натиснат Ctrl

        If GetAsyncKeyState(j) And &H8000 <> 0 Then ' Ако функцията даде стойност различна от 0 значи има и друг бутон

        Text1.Text = GetAsyncKeyState(j) And &H8000 ' Сменяме стойността на помощното контролно текстово поле да е различна от 0

        End If

    Next

End Sub

 

'Контролно помощно текстово поле, което задейства процедурата за смяна само при промяна и то при условие

Private Sub Text2_Change()

    If Text2.Text = "Ctrl - Горе" And Text1.Text = "0" Then 'Условие за смяна

        Command5_Click ' Реалната смяна, чрез задействане на клавишната комбинация

    End If

End Sub

 

'При промяна на текста в Text1

Private Sub Text1_Change()

    If Text1.Text = "0" Then Else Timer1.Enabled = False ' Ako се получи нещо, което не е "0" спираме Таймера следящза други бутони

End Sub

 

' СОРС ЗА МОДУЛ ПРИХВАЩАЩ Caps Lock

 

'Декларация на АПИ функция

 Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer

 

'Публична функция за проверка състоянието на CapsLock

 Public Function CapsLockOn() As Boolean

     iKeyState = GetKeyState(vbKeyCapital) ' Тук взимаме състоянието на CapsLock

     CapsLockOn = (iKeyState = 1 Or iKeyState = -127) ' Ако е горната функция върне 1 или -127, значи е натиснат, тоест TRUE

 End Function

 

' СОРС ЗА МОДУЛ ПРИХВАЩАЩ Shift, Alt, Ctrl

'Декларация на АПИ функция за проверка състоянието на клавиш

Public Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer

 

' Публична функция връщаща TRUE, ако е натиснат Ctrl

Function CtrlKey() As Boolean

    CtrlKey = (GetAsyncKeyState(vbKeyControl) And &H8000)

End Function

 

' Публична функция връщаща TRUE, ако е натиснат Shift

Function ShiftKey() As Boolean

ShiftKey = (GetAsyncKeyState(vbKeyShift) And &H8000)

End Function

 

' Публична функция връщаща TRUE, ако е натиснат Alt

Function AltKey() As Boolean

AltKey = (GetAsyncKeyState(vbKeyMenu) And &H8000)

End Function

 

 

' СОРС ЗА МОДУЛ ЗА СОФТУЕРНО СРАБОТВАНЕ НА БУТОНИ И КЛАВИШНИ КОМБИНАЦИИ

 

'Декларация на АПИ функция

Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

 

' Публична процедура за софтуерно сработване на бутон в Долно положение

Public Sub KeyDown(ByVal vKey As KeyCodeConstants)

   keybd_event vKey, 0, &H1, 0

End Sub

 

' Публична процедура за софтуерно сработване на бутон в Горно положение

Public Sub KeyUp(ByVal vKey As KeyCodeConstants)

   keybd_event vKey, 0, &H1 Or &H2, 0

End Sub