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

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