Pull to refresh

Автокликер с имитацией нажатия клавиш на VB.net

Здравствуйте!

Понадобился мне на днях автокликер, в сети не нашёл такого, который бы мне подошел, поэтому решил сделать свой.
В качестве языка программирования выбрал vb.net.
Мне нужен был не просто автокликер, а также имитатор нажатия клавиш, через разный интервал времени.
Что получилось сейчас покажу и расскажу как я это реализовал.


Добавляем на форму два таймера и NotifyIcon, все остальные объекты добавим динамически, также в ресурсы добавляем картинки, для NotifyIcon1 и иконки программы.
Весь код тут приводить не буду, т.к. там много однотипных операций (создание объектов) да и получилось довольно громоздко, при том, что не все необходимые проверки были сделаны и нет обработки исключений.
Ссылки на сам файл и исходники внизу.

    Declare Function GetAsyncKeyState Lib "user32" (ByVal vkey As Integer) As Short ' Подключаем API функцию для отслеживания нажатых клавиш
    Declare Function MOUSEEVENTF Lib "user32.dll" Alias "mouse_event" (ByVal dwFlags As Int32, ByVal dX As Int32, ByVal dY As Int32, ByVal cButtons As Int32, ByVal dwExtraInfo As Int32) As Boolean ' Подключаем API функцию для имитации нажатия клавиш мыши
    Public Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Integer, ByVal dwExtraInfo As Integer) ' Подключаем API функцию для имитации нажатия клавиш клавиатуры


    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick ' Тут собственно и происходит автокликанье
        Dim Action() As String = Split(file_array(i), "/", 3) ' По текущему "шагу" вычисляем что нужно сделать
        If (Action.Length = 3) Then
            If (Action(0) = "cursor") Then ' Если нужно кликнуть
                Cursor.Position = New Point(Action(1), Action(2)) ' Задаем координаты
                MOUSEEVENTF(MOUSEEVENTF_LEFTDOWN, 0, 0, 3, 3) ' Имитируем нажатие клавиши мышки
                MOUSEEVENTF(MOUSEEVENTF_LEFTUP, 0, 0, 3, 3) ' Отпускаем клавишу мышки
            ElseIf (Action(0) = "key") Then ' Если нужно имитировать нажатие клавиши
                keybd_event(Action(1), 0, 0, 0) ' Имитируем нажатием клавиши клавиатуры
                keybd_event(Action(1), 0, KEYEVENTF_KEYUP, 0) ' Отпускаем
            End If
            i += 1 ' переходим к следующему действию
        End If
        If (i >= limit_i) Then ' Если все действия выполнены
            i = 1
            step_i += 1 ' Переходим к следующему шагу
            If (step_i >= steps) Then ' Если все шаги выполнены
                NotifyIcon1.Icon = My.Resources._stop
                Timer2.Enabled = False ' Останавливаем выполнение действий
                Me.Show() ' Показываем программу
            End If
        Else
            Action = Split(file_array(1), "/", 3) ' если не все действия выполнены, узнаем интервал таймера перед следующим действием
            If (Action.Length = 3) Then
                If (Action(0) = "key") Then
                    Timer2.Interval = Action(2) * 1000
                Else : Timer2.Interval = interval_c * 1000
                End If
            End If
        End If
    End Sub


Автокликер
Исходники
P.S. если в программе есть ошибки, (а они наверняка есть) не критикуйте сильно, я только изучаю яп.
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.