' СОРС ЗА ФОРМАТА
Dim BroiachTimer1, BroiachStaro 'Декларация
на двата брояча
'Пример за използване на функцията
за преместване и кликане на мишката
Private Sub Command1_Click()
Mouse2Click 50, 50
' Тук задействаме функцията от модула, като подаваме
кординатите
End Sub
'При натискане на бутона за ЗАПИС
Private Sub Command2_Click()
If
Command2.Caption = "СТАРТ ЗАПИС" Then ' Ако
надписа на бутона е СТАРТ ЗАПИС
List1.Clear:
List2.Clear: List3.Clear ' Почистваме трите Listboxa
BroiachTimer1
= 0: BroiachStaro = 0 'Нулираме броячите
Timer1.Enabled
= True '
Пускаме таймера за запис
Command2.Caption = "СТОП ЗАПИС" '
Сменяме надписа
Command2.BackColor = vbRed ' Сменяме цвета на
бутона на червен
Else ' Ако надписа на бутона не е СТАРТ ЗАПИС
Timer1.Enabled
= False ' Спираме таймера за запис
Command2.Caption = "СТАРТ ЗАПИС" '
Сменяме надписа
Command2.BackColor = &H80FF80 ' Сменяме
цвета на бутона на зелен
End If
End Sub
'Таймер за записване
Private Sub Timer1_Timer()
BroiachTimer1 =
BroiachTimer1 + 1 ' При всяко задействане увеличаваме
брояча с единица
Text1.Text =
BroiachTimer1 ' Показваме стойността на брояча в
Text1, за по-голяма яснота на примера
If
GetAsyncKeyState(1) Then ' Ако е кликнат левия бутон
на мишката с код 1
Kordinati ' Прихващаме
кординатите на мишката
If BroiachTimer1 -
BroiachStaro > 2 Then ' Тук сравняваме показанията
на двата брояча и записваме само ако разликата е >2
List1.AddItem BroiachTimer1 ' Добавяме в List1 стойността на брояча
List2.AddItem
cordinataX ' Добавяме в List2 кордината Х на мишката
List3.AddItem
cordinataY ' Добавяме в List3 кордината Y на мишката
BroiachStaro =
BroiachTimer1 ' Запомняме последното показание на
брояча
End If
End If
End Sub
' При кликане върху бутона СТАРТ
ПОВТОРЕНИЕ
Private Sub Command3_Click()
BroiachTimer1
= 0 ' Нулираме брояча
Timer2.Enabled
= True ' Пускаме таймера, който ще повтори действията
List1.ListIndex = 0: List2.ListIndex = 0: List3.ListIndex = 0 ' Отиваме на първите записи в трите Listboxa
End Sub
'Таймер повтарящ записаните
действия
Private Sub Timer2_Timer()
On Error GoTo dolu
' Манипулатор на грешка
BroiachTimer1 =
BroiachTimer1 + 1 ' Увеличаваме стойността на брояча
при всяко задействане на таймера
Text1.Text =
BroiachTimer1 ' Визуализираме показанията на брояча в
Text1, за по-голяма яснота
If BroiachTimer1 =
List1.Text Then ' Ако имаме съвпадение на брояча и
записаната цифра в List1
MouseClick
List2.Text, List3.Text 'Преместваме мишката и кликаме
' Отиваме на следващия по ред запис в
трите Listboxa
List1.ListIndex = List1.ListIndex + 1: List2.ListIndex = List1.ListIndex:
List3.ListIndex = List1.ListIndex
If
List1.ListIndex = List1.ListCount - 1 Then Timer2.Enabled = False ' Ако сме на последния запис спираме таймера за повторение
End If
Exit Sub
dolu:
Timer2.Enabled = False ' Ако се получи грешка,
отново спираме таймера за повторение на записаното
End Sub
'СОРС ЗА МОДУЛА MouseMoveClick
'Декларация на АПИ функция за
преместване на мишката
Declare Function SetCursorPos& Lib "user32"
(ByVal X As Long, ByVal Y As Long)
'Декларация на АПИ функция за
кликане с мишката
Declare Function mouse_event Lib "User32.dll"
(ByVal dwflags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal
dwData As Integer, ByVal dwExtraInfo As Integer) As Integer
'Декларации на константи
Const MOUSE_EVENT_F_LEFT_DOWN As Integer = 2
Const MOUSE_EVENT_F_LEFT_UP As Integer = 4
Const MOUSE_EVENT_F_RIGHT_DOWN As Integer = 8
Const MOUSE_EVENT_F_RIGHT_UP As Integer = 16
' Публична процедура за преместване
и единично кликане
Public Sub MouseClick(MouseX, MouseY)
Call
SetCursorPos(MouseX, MouseY)
Call
mouse_event(MOUSE_EVENT_F_LEFT_DOWN, MouseX, MouseY, 0, 0)
Call
mouse_event(MOUSE_EVENT_F_LEFT_UP, MouseX, MouseY, 0, 0)
End Sub
' Публична процедура за преместване
и двойно кликане
Public Sub Mouse2Click(MouseX, MouseY)
Call
SetCursorPos(MouseX, MouseY)
Call mouse_event(MOUSE_EVENT_F_LEFT_DOWN,
MouseX, MouseY, 0, 0)
Call
mouse_event(MOUSE_EVENT_F_LEFT_UP, MouseX, MouseY, 0, 0)
Call
mouse_event(MOUSE_EVENT_F_LEFT_DOWN, MouseX, MouseY, 0, 0)
Call
mouse_event(MOUSE_EVENT_F_LEFT_UP, MouseX, MouseY, 0, 0)
End Sub
'СОРС ЗА МОДУЛА CordinatiMouse
' Декларация на АПИ функция за
взимане позицията на мишката
Private Declare Sub GetCursorPos Lib "user32"
(lpPoint As POINTAPI)
'Декларация на АПИ функция за
проверка на натиснат бутон
Public Declare Function GetAsyncKeyState Lib
"user32" (ByVal vKey As Long) As Integer
' Декларация на променливи
Private Type POINTAPI
X As Long
Y As Long
End Type
Private RECT As POINTAPI
Public cordinataX As Integer
Public cordinataY As Integer
'Публичната процедура за запис на
кординатите на мишката в публичните променливи cordinataX и cordinataY
Public Sub Kordinati()
Call GetCursorPos(RECT)
cordinataX = RECT.X
cordinataY = RECT.Y
End Sub