Добрый вечер читатели хабра! Недавно один человек показал макрос-бота для браузерной игры Diamond Dash, пост. А делал он все при помощи языка макросов AutoIt. И я вспомнил, что для разработки полуавтоматического бота на C# использовал библиотеку AutoIt.
Как я разрабатывал, смотрите ниже…
Первым делом я скачал сам AutoIt (AutoIt Full Installation) и установил. Потом в VisualStudio добавил библиотеку. Не знаю почему но у меня не получилось использовать библиотеку без установки exe файла.
Суть моей программы заключалась в том что нужно выбрать прямоугольник и потом при помощи горячих клавиш указать его положение, а также указать сколько в нем полей.
Например:

Для использования горячих клавиш я использовал класс найденный на просторах интернета, который использовал горячие клавиши не только при активном окне приложение, но и при неактивном.
Код моих горячих клавиш:
Получаем 3 горячих клавиши: Shift+Q, Shift+W, Shift+E, которые выполняют события position1, position2 и position3.
Можно использовать не только Shift но и Ctrl, Alt, Win или ничего.
Передаем программе положения для вычисления сетки по которым нужно совершать клики.
Код вычисления:
Параметры:
И самое интересное в методе Shag, в котором мы вызываем метод из библиотеки АutoIt MouseClick его параметры:
Ну вот и все основное я вам показал. Исходники моей программы: Скачать.
Небольшое видео приложения:
PS: Выражаю благодарность своей маме, которая меня однажды попросила придумать как можно тратить меньше времени на приложения «Веселая ферма», но так как она ни в какую не могла отказаться, я написал данную программу. Сначала мне пришлось немного обучить ее в использовании программы, но теперь она счастлива.
Всем спасибо.
Как я разрабатывал, смотрите ниже…
Необходимые средства для работы
- Сам VisualStudio 2010
- Навыки C#
- И библиотека AutoIt
Первым делом я скачал сам AutoIt (AutoIt Full Installation) и установил. Потом в VisualStudio добавил библиотеку. Не знаю почему но у меня не получилось использовать библиотеку без установки exe файла.
Начало работы
Суть моей программы заключалась в том что нужно выбрать прямоугольник и потом при помощи горячих клавиш указать его положение, а также указать сколько в нем полей.
Например:

- Положение прямоугольника задается точками 1.1, 1.n, n.1.
- Высота 4
- Ширина 3
Горячие клавиши:
Для использования горячих клавиш я использовал класс найденный на просторах интернета, который использовал горячие клавиши не только при активном окне приложение, но и при неактивном.
Код моих горячих клавиш:
HotKey[] Key = new HotKey[4];
Key[1] = new HotKey();
Key[2] = new HotKey();
Key[3] = new HotKey();
Key[1].KeyModifier = HotKey.KeyModifiers.Shift;
Key[1].Key = Keys.Q;
Key[1].HotKeyPressed += new KeyEventHandler(position1);
Key[2].KeyModifier = HotKey.KeyModifiers.Shift;
Key[2].Key = Keys.W;
Key[2].HotKeyPressed += new KeyEventHandler(position2);
Key[3].KeyModifier = HotKey.KeyModifiers.Shift;
Key[3].Key = Keys.E;
Key[3].HotKeyPressed += new KeyEventHandler(position3);
Получаем 3 горячих клавиши: Shift+Q, Shift+W, Shift+E, которые выполняют события position1, position2 и position3.
Можно использовать не только Shift но и Ctrl, Alt, Win или ничего.
Вычисление точек для «клика»:
Передаем программе положения для вычисления сетки по которым нужно совершать клики.
Код вычисления:
private void button1_Click(object sender, EventArgs e)
{
int shirina = Convert.ToInt32(textBox4.Text);
int Vnax, Vnay, Vx, Vy, Nx, Ny;
Vx = Convert.ToInt32(textBox1.Text);
Vy = Convert.ToInt32(textBox2.Text);
Nx = Convert.ToInt32(textBox3.Text);
Ny = Convert.ToInt32(textBox6.Text);
Vnax = (Convert.ToInt32(textBox7.Text) - Convert.ToInt32(textBox1.Text)) / (shirina - 1);
Vnay = (Convert.ToInt32(textBox2.Text) - Convert.ToInt32(textBox8.Text)) / (shirina - 1);
for (int i = 1; i <= shirina; i++)
{
Shag(Vx, Vy, Nx, Ny);
Vx += Vnax;
Vy -= Vnay;
Nx += Vnax;
Ny -= Vnay;
}
}
private void Shag(int Vx, int Vy, int Nx, int Ny)
{
int vysota = Convert.ToInt32(textBox5.Text);
int nax, nay, x, y;
int nS = 4;
int nCout = 1;
String Str = "left";
nax = (Nx - Vx) / (vysota - 1);
nay = (Ny - Vy) / (vysota - 1);
x = Vx;
y = Vy;
for (int i = 1; i <= vysota; i++)
{
autoIt.MouseClick(Str, x, y, nCout, nS);
x += nax;
y += nay;
}
Параметры:
- Vx, Vy верхнее положение точки
- Nx, Ny нижнее положение точки
И самое интересное в методе Shag, в котором мы вызываем метод из библиотеки АutoIt MouseClick его параметры:
- x, y — положение точки для клики
- nS — скорость перемещения курсора от одной точки к другой
- nCout — количество кликов
- Str — какой кнопкой кликать, правой или левой
Ну вот и все основное я вам показал. Исходники моей программы: Скачать.
Небольшое видео приложения:
- не знаю почему пропал курсор но в пред. просмотре он был. Использовал Camtasia
- нажатие немного подвисает, в этом виновен мой слабый бук + Camtasia хорошо грузила систему
- и еще, точность кликов зависит от правильного определения положения области для «кликания»
PS: Выражаю благодарность своей маме, которая меня однажды попросила придумать как можно тратить меньше времени на приложения «Веселая ферма», но так как она ни в какую не могла отказаться, я написал данную программу. Сначала мне пришлось немного обучить ее в использовании программы, но теперь она счастлива.
Всем спасибо.