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

Добавляем на форму два таймера и NotifyIcon, все остальные объекты добавим динамически, также в ресурсы добавляем картинки, для NotifyIcon1 и иконки программы.
Весь код тут приводить не буду, т.к. там много однотипных операций (создание объектов) да и получилось довольно громоздко, при том, что не все необходимые проверки были сделаны и нет обработки исключений.
Ссылки на сам файл и исходники внизу.
Автокликер
Исходники
P.S. если в программе есть ошибки, (а они наверняка есть) не критикуйте сильно, я только изучаю яп.
Понадобился мне на днях автокликер, в сети не нашёл такого, который бы мне подошел, поэтому решил сделать свой.
В качестве языка программирования выбрал 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. если в программе есть ошибки, (а они наверняка есть) не критикуйте сильно, я только изучаю яп.