Cвежие новости из мира электроники и обзоры смартфонов, планшетов и мобильных гаджетов от техноблоггера
Разделы сайта
На главную

Автоматизация действий в Windows

Иванов Иван
Эксперт по гаджетам
17
Благодарностей
за статью
4523

📲 Как автоматизировать рутинные действия под Windows ? Этот вопрос часто задают мне в реальной жизни, видя, как мой компьютер сам выполняет действия, будь то в играх, будь то на сайтах или других местах. Если вас интересует данная тема автоматизации в Windows и вы хотите научиться, как автоматически выполнять какие-либо действия в любом приложении под Windows, то вам сюда. Оговорюсь, это не полный гайд, а введение и основы. Поняв эти основы вы уже сможете автоматизировать до 80% всех действий в Windows или приложениях. А для дальнейшего развития навыков есть куча тематических форумов и мануалов, благо, язык Autoit очень легек в освоении.

Как вы уже поняли, сегодня будут основы по Autoit — бесплатный набор средств и язык для автоматизации выполнения задач в Microsoft Windows. Позволяет создавать скрипты автоматизации (иногда называемые макросами), способные имитировать действия пользователя. Я знаю, что некоторые люди скачивают всякие расширения и плагины для браузеров, дабы написать какие-то макросы, чтобы браузер делал действия за них. Зачем, когда есть Autoit ?

Скачивание и установка

Чтобы начать пользоваться и начать писать скрипты на Autoit нужно скачать программу-обработчик, ссылка на страницу скачивания: https://www.autoitscript.com/site/autoit/downloads/

На момент написания этой статьи версия Autoit была v3.3.14.5.

Дальше нам желательно скачать специальный текстовый редактор AutoIt Script, ссылка на скачивание установщика: https://www.autoitscript.com/site/autoit-script-editor/downloads/

Можно конечно пользоваться и NotePad++, он поддерживает синтаксис Autoit, но я предпочитаю оригинальный редактор.

Порядок установки такой:

  1. Скачиваем и устанавливаем сначала autoit-v3-setup.exe;
  2. Затем уже ставим редактор SciTE4AutoIt3.exe.

Если у вас 64-битная Windows, то выбираем «use native x64 tools by default», а если 32-битная, то оставляем как есть. Если же вы не знаете какая у вас Windows, также оставляем все как есть.

Также во время установки компилятора Autoit будет задан выбор, «run the script» и «edit the script», обязательно выбираем второй вариант, «edit the script, иначе каждый раз при открытия файла скрипта он будет запускаться, что нам не нужно.

После установки у нас в меню Пуск должен появиться пункт Autoit, заходим в него и выбираем Autoit Windows Info, открываем приложение.

Также после установки у вас в контекстном меню Windows (это то, что появляется по нажатию правой кнопки мыши) появится пункт «Создать -> Autoit V3 Script». Создаем такой файл, открываем его и попадаем в редактор.

Откройте этот пустой файл в оригинальном редакторе и увидите пару строк по умолчанию, это комментарии, все это можно удалить.

В утилите Autoit Windows Info, которую вы открыли до этого, жмем стрелку вправо до тех пор, пока не появится пункт «Mouse», который нам и будет нужен. Все остальное это для более серьезных вещей и не рассматривается в данном гайде.

Autoit Windows Info - Основы Autoit 3
Autoit Windows Info.

Основы Autoit

Итак, самое простое, как заставить курсор мыши бегать по экрану, кликать там где нужно, крутить колесиком мыши, щелкать правой кнопкой и тд. и тп. Основы синтаксиса и самые необходимые базовые конструкции я приведу ниже, все остальное найдете сами в интернете:

Sleep(время в миллисекундах), например, Sleep(30000) — останавливает исполнение кода на заданное время. В моем примере это 30.000 миллисекунд, что равно 30 секундам. Всегда ставим какую-нибудь задержку в самое начало кода, чтобы когда вы его запустили, у вас было время на переключение на нужное приложение и т.п.

MouseMove(x, y) — перемещение курсора мыши в заданные координаты Х и Y, измеряется в пикселях. Например,

MouseMove(150, 255) — переместит курсор в точку с координатами 150 пикселей по оси X (отступ слева) и 255 пикселей по оси Y (отступ сверху).

MouseClick(«какая кнопка», x, y, «сколько раз кликать, число») — как и впредыдущем случае перемещает курсор мыши в точку с координатами X и Y. Но также эта команда позволяет кликнуть по этим координатам, либо правой клавишей, либо левой, причем кликнуть нужное количество раз. Разберем на примере:

MouseClick(«left», 150, 255, 2) — команда кликнет 2 раза левой кнопкой мыши по точке с координатами 150 и 255 пикселей. Или:

MouseClick(«right», 150, 255, 1) — кликнет правой кнопкой мыши 1 раз по точке с координатами 150 и 255.

Резонный вопрос, а как мне понять какие координаты у точки, по которой надо кликнуть ? Для этого, в утилите Autoit Windows Info в разделе «Mouse» перетягиваем иконку курсора (1 на картинке) на нужное место и отпускаем. В поле «Position» (2) внизу увидим значения для X и Y, тогда как поле «Color» показывает цвет пикселя, на который наведен курсор мыши (в HEX формате):

Вкладка Mouse - Основы Autoit 3
Вкладка Mouse.

Важно ! Координаты X и Y отсчитываются конкретно под ваш монитор и ваше разрешение экрана. То есть, написав скрипт у себя дома, на работе он может кликать не туда куда нужно, обязательно нужно писать координаты под конкретное разрешение монитора.

Больше автоматизации, к примеру, как сделать, чтобы курсор гулял по какому-то сайту и периодически кликал по нужным местам, при этом не прописывая кучу строк MouseClick ? Для этого, как и в любом языке, есть понятие цикл. Приведу простые истины и углубляться в виды циклов не буду. Запомните это и пока хватит:

$i = 0

Do (делай)

...набор команд, любой код...

$i = $i + 1

Until (пока) $i = 5

Где $i — это переменная. Переменная пишется через знак доллара и может принимать как числовые, так и текстовые значения. Например, $abc = «техноблоггер» или $z = 25.54.

Do — инициирует начало цикла, а Until — его конец. Все что между ними будет исполняться столько раз, пока переменная $i не станет равной 5. В теле цикла (внутри Do…Until) мы видим запись

$i = $i + 1 — это счетчик, который прибавляет +1 к значению $i после каждой итерации цикла. Важно! Если этого не сделать, мы получим бесконечный цикл, который никогда не завершится и компьютер может зависнуть.

Пример:

$a = 0

Do

MouseClick("left", 150, 255, 1)
Sleep(1000)
MouseClick("left", 155, 269, 1)
Sleep(1500)
MouseClick("left", 120, 251, 1)
Sleep(3000)

$a = $a + 1

Until $a = 4

Этот скрипт будет кликать по одному разу по координатам и ожидать заданное количество времени между кликами. То есть, сначала будт клик по точке 150 — 255 пикселей, затем ждем секунду, далее клик по точке 155 — 269, ждем 1,5 секунды, и наконец клик по 120 — 251 и ждем уже 3 секунды. И эти действия будут повторены 5 раз, от 0 до 4. Можно написать $a = 1 и до $a = 5, в моем случае отсчет был от 0.

В самом начале цикл пробежал один раз и добавил +1 переменной $a, которая теперь стала равна 1: $a = 0 + 1, затем сравнил, выполнилось ли условие, что $a = 4 ? И так до тех пор, пока условие не выполнится и $a не станет равно 4.

Насчет Sleep, как я уже говорил, это просто задержка. Советую всегда ставить Sleep между конструкциями действий, например, перемещения мыши.

И последнее, операции условий (ветвления) или как хотите называйте.

If … Else (если … иначе).

If (в скобках пишутся условия или выражения) Then (тогда)
... набор строк или команд...
Else (иначе)
... набор строк или команд...
Endif (конец ветвления)

Причем, Else — необязательно, можно и без него. Пример:

If ($i = 4) Then

MouseClick("left", 150, 255, 1)

Else

MouseClick("right", 150, 255, 1)

Endif

Понятно, думаю. Если $i равно 4, то кликаем левой кнопкой мыши 1 раз по координатам 150, 255. Иначе (если $i не равно 4) кликаем правой кнопкой мыши 1 раз по координатам 150, 255.

К примеру, в созданиях ботов для игр в качестве условия может выступать цвет пикселя, на который наведен курсор. Как вы помните, в утилите кроме координат еще показывает цвет пикселя в HEX формате.

В моем примере на картинке это 0xF0F4F9 (значение можно скопировать CTRL + C).

А как получить цвет пикселя непосредственно в программе автоматически ? Для этого есть несколько способов, самый простой это конструкция:

PixelGetcolor (x, y) — эта запись присваивает код цвета пикселя по координатам x,y в текстовом формате. Пример:

$x = 27
$y = 445
$i = "0xF0F4F9"

MouseMove($x, $y)

$color = PixelGetColor($x, $y)

if ($i = $color) Then

MouseClick("left", 150, 255, 1)

Endif

Разберем. В переменных $x и $y лежат координаты соответственно для X и Y, куда будем перемещаться. Переменной $color присвоим значение, которое отдаст PixelGetColor. Дальше условие, если переменная $i = переменной $color, то кликаем левой кнопкой мышки 1 раз по нужным координатам.

Ну и напоследок, одной из кучи возможности Autoit является набор текста, вы можете послать в нужное место нужные набор символов.

Send(«текст») — отправляет слово «текст» в то место, где на данный момент находится курсор мыши.

Send(«{DOWN}») — нажмет клавишу «Стелка Вниз» на клавиатуре. Полный список набора клавиш можете найти в интернете.

Ну про колесико мыши упомяну:

MouseWheel(«куда крутить», «сколько крутить») — крутит колесико мыши вверх или вниз нужное количество раз. Например,

MouseWheel(«up», 10) или MouseWheel(«down», 15) — прокрутит колесико (скролл) мыши 10 раз вверх или 15 раз вниз.

Запуск скрипта

Ну хорошо, мы все написали, сохранили и хотим проверить. Как запустить скрипт Autoit на исполнение? Есть два способа:

  • В редакторе нажимаем Tools -> Go (запуск), Tools -> Stop Executing (остановка);
  • В редакторе жмем F5 (запуск) и CTRL + Break (остановка).

Если вы не расставите нужные задержки через Sleep, то не успеете остановить скрипт. Кстати, в редактор встроен отладчик, который подсветит красным неверный синтаксис и не даст запуститься скрипту, если в нем есть ошибки.

Писать можно долго, возможностей у языка очень много, это были просто основы для понимания. Если есть вопросы задавайте в комментариях. И не забывайте ставить Sleep.

Понравилась статья? Поставьте лайк автору
Лайк!
17
человек уже поблагодарили
Обсудим?
  1. Константин

    Спасибо за статью! Язык заинтересовал, надо попробовать

    3 года назад
  2. Юрий

    А можно запустить скрипт в определенное время?

    1 год назад
  3. Юрий

    А можно запустить скрипт в определенное время?

    1 год назад