' СОРС ЗА ФОРМАТА
' Примери за проверка на
функционални бутони
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