Как стать автором
Обновить

Автокликер с имитацией нажатия клавиш на 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. если в программе есть ошибки, (а они наверняка есть) не критикуйте сильно, я только изучаю яп.
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.