Автоматизация рутины на ПК
Хочу рассказать о простой и доступной программке AutoHotkey, с помощью которой вы можете быстро выполнять однообразную и монотонную работу за компьютером, например, удалять свои посты и комментарии. К тому же она способна находить нужные изображения на экране. Наглядно покажу как ее использовать на примере простановки лайков на ДТФ.
Перед началом работы
Сначала найдите и установите себе саму программу. Она бесплатная, легкая и в открытом доступе. После установки создайте в любом месте папку с любым названием и в ней создайте текстовый файл.
Создаем изображения для поиска
Теперь нам нужно создать образцы картинок, которые мы будем искать на экране. Делаем снимок экрана кнопкой "PRT SC" на клавиатуре и в базовом пейнте обрезаем по контуру нужного объекта и сохраняем в той же папке.
Пишем код для определения координат курсора
Открываем наш текстовый файл в любом редакторе, например, через стандартный блокнот и пишем в нем следующее.
Здесь "Numpad5" - это обозначение клавиши 5 на нумпаде.
Все что после знаков "::" это выполняемый при нажатии код.
Окончание действий клавиши обозначается через "return". Это база и основа любого кода. Сейчас он не делает ничего.
Теперь напишем код для поиска координат курсора мыши.
Знак ";" обозначает начало текстового комментария. Вся строчка после него не считывается программой, это подсказка для вас самих, чтобы не теряться в тексте кода.
Функция "MouseGetPos" считывает текущие координаты мыши и записывает их в переменные "xpos" и "ypos". Последним двум можно задать любое произвольное название (главное, чтобы оно не совпадало с названием других встроенных функций).
Функция "Msgbox" создает текстовое сообщение на экране, где "Coordinates: X%xpos% Y%ypos%." - это выводимый текст, а значения переменных "xpos" и "ypos" в нем находятся между знаками "%", чтобы не путать с остальным текстом.
Записываем координаты активного экрана
Теперь мы можем двойным кликом запустить наш код и удостовериться, что он работает. В случае чего вносим правки и перезапускаем его командой "Reload This Script".
Теперь открываем рабочее пространство. В нашем случае это свежее на ПДФ. Располагаем курсор поочередно в границах активного пространства, где могут находиться искомые изображения лойсов.
Имейте ввиду, что у разных активных окон могут быть разные системы отсчета, а координаты не совпадать, даже находясь в одной точке экрана.
Пишем основной код
Возвращаемся в редактор. Для начала добавим вот такую команду.
Здесь мы задали на кнопку "Numpad7" команду поставить работу кода на паузу с помощью функции "Pause". Это нам пригодится, чтобы остановить код, если что-то пойдет не так в процессе его работы. Ведь в дальнейшем он будет управлять курсором мыши, и вы не сможете ему иначе помешать.
Далее пишем функцию для поиска изображения на экране и простановки лайка.
Здесь при нажатии клавиши "Numpad1" выполняется функция поиска совпадений по изображению и нажатие на него.
Сначала функция "ImageSearch" ищет изображение "loyse1.png" между координатами "490, 226, 1305, 1022," с точностью "*50" и записывает его координаты в переменные "xp, yp". Если совпадения не обнаружено, то в переменные заносятся значения "0".
Как можно догадаться, координаты для поиска взяты с предыдущего шага и записываются по порядку попарно:
Координаты верхней левой точки, а после нижней правой.
ИЛИ х1, у1, х2, у2.
Точность *50 - это среднее значение точности и менять его нет необходимости в большинстве случаев.
Далее пишется проверка командой "if xp > 0". Она проверяет, нашла ли предыдущая функция совпадение по изображению. Все, что пишется после "if" срабатывает только при выполнении записанного условия. Т.е. если "xp > 0". В противном случае ничего не происходит.
Но если совпадение найдено, то выполняется функция "MouseClick", которая нажимает "left" - левую кнопку мыши (а если написать "right", то правую), в координатах на активном экране "xp, yp" (здесь введены ранее полученные координаты), в количестве "1" раз со скоростью "4" (чем выше число, тем медленнее, 1 - самая быстрая скорость).
Перед функцией я проставила большой пробел (табуляцию), чтобы наглядно было видно, что она относится к условию выше.
Можете проверить работу кода. Теперь при нажатии "Numpad1", код будет искать на экране совпадение и нажимать на него.
Добавляем остальные искомые элементы
Пока мы прописали поиск одного элемента из трех. Добавляем и их.
Теперь у нас есть сложная конструкция "if" - "else". Как вы уже знаете, все что после "if", выполняется при соблюдении условий, а для противного случая используется команда "else". Она неразрывно используется только в связке, сама по себе отдельно она не работает.
Иначе говоря, если код не находит совпадений с "loyse1.png", то ищет "loyse2.png", а если не найдет и его, то ищет "loyse3.png". Таким образом можно выстраивать бесконечный перебор всех искомых вариантов.
Теперь при нажатии "Numpad1" код проставит лойс при нахождении всех вышеперечисленных трех случаев.
Скроллинг страницы и полная автономность
Хоть код ставит лойсы сам, нам все еще необходимо вручную листать стену и нажимать клавишу его запуска. Исправим это.
Здесь мы добавили пару элементов. Первый - скроллинг.
Здесь после еще одного "else" стоит функция "send, {Wheeldown 2}", которая командой "Wheeldown" имитирует прокручивание колесика мыши вниз (а "Wheelup" - скроллинг вверх) со скоростью "2". Команда "send" говорит коду нажать указанную в "{...}" кнопку.
Иначе говоря, если код не находит совпадений по изображению, то будет скроллить страницу вниз.
Однако, он сделает это лишь один раз. Для полной автоматизации нам нужно, чтобы код выполнял команду непрерывно, т.е. зациклил ее. Для этого применяется еще одно добавление в начале и конце.
Вот этот вот элемент. Функция "Loop" говорит коду выполнять то, что находится между "{...}" бесконечно (а у нас там все вышеперечисленное), пока вы не прервете код.
Вот для этого мы и вводили возможность поставить его на паузу кнопкой "Numpad7".
По итогу вы получите что-то такое:
Конечно, не стоит ожидать от программы всемогущества, за ней нужно периодически приглядывать и вносить корректировки. Например, проблему выше можно решить парой вариантов:
- оставить лишь один вариант простановки лайка
- ставить его через общую панельку лайков
- сузить поле поиска совпадений до первого смайла из уже проставленных
Надеюсь, этого простенького вводного курса вам хватит, чтобы заинтересоваться и освоить сей полезный инструмент. С помощью него, я смогла удалить 19к+ сообщений в телеге на всякий случай перед началом сентября.