Автоматизация рутины с AutoHotKey. Часть 2: Распознавание экрана.

Небольшое продолжение к предыдущему посту

http://pikabu.ru/story/avtomatizatsiya_rutinyi_s_autohotkey_...

За прошедший год мое владение скриптами немного улучшилось, в частности, теперь я могу научить скрипт распознавать изображение на экране, искать всякие кнопки, рисунки и т.д.


Давайте попробуем какую-нибудь незатейливую программу, например игрушку сапер.

Научим скрипт реагировать на нашу смерть.

Автоматизация рутины с AutoHotKey. Часть 2: Распознавание экрана. Автоматизация, Autohotkey, Длиннопост

Делаем скриншот, открываем Пэйнт, и выделяем небольшой кусочек желтой рожицы.

Автоматизация рутины с AutoHotKey. Часть 2: Распознавание экрана. Автоматизация, Autohotkey, Длиннопост

Обрезаем и сохраняем в файл smert.png. Можно сохранять и в bmp и в jpg, Autohotkey кушает их всех.

Получился вот такой небольшой файлик:

Автоматизация рутины с AutoHotKey. Часть 2: Распознавание экрана. Автоматизация, Autohotkey, Длиннопост

Этот кусочек изображения и будет искать скрипт.

Теперь нам нужны координаты области на экране, где скрипт будет производить поиск. Можно, конечно, сказать скрипту сканировать весь экран, но это нерационально и наверняка будет приводить к задержкам в работе.

Запускаем этот скрипт:


^F1::

MouseGetPos, X, Y

Tooltip, %X% %Y%

Clipboard = %X%, %Y%

Sleep 1000

Tooltip

Return


При нажатии ctrl+F1 координаты курсора появятся на экране И скопируются в буфер обмена.

Автоматизация рутины с AutoHotKey. Часть 2: Распознавание экрана. Автоматизация, Autohotkey, Длиннопост

Наша задача: получить координаты вот этой области. А именно - координаты левого верхнего и правого нижнего углов. Подведите кончик курсора к ЛВ углу и нажмите Ctrl F1. Сохраните эти координаты. То же самое с ПН углом. (окно Сапера должно быть активным)

Автоматизация рутины с AutoHotKey. Часть 2: Распознавание экрана. Автоматизация, Autohotkey, Длиннопост

Теперь создайте следующий скрипт:


F1::

Loop,

{

ImageSearch, xp, yp, 75, 61, 97, 83, *50 smert.png

Sleep 200

If xp > 0

Break

}

MsgBox, Muhaha!

Return


F10::ExitApp

F12::Suspend, Toggle


Если скрипт ничего не находит, то переменным xp, yp присваивается пустое значение, Null.

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

*50 отвечает за строгость поиска. *0 максимальная строгость, *255 минимальная.


F10 нужен для аварийного выхода из скрипта если вы вдруг создадите бесконечный скрипт, блокирующий ваши действия.

F12 для временного отключения/включения горячих клавиш.


Итак, расположите smert.png в одной папке со скриптом, запустите сапера, нажмите F1, и каждый 200 миллисекунд скрипт будет искать ваш файлик на экране.

Автоматизация рутины с AutoHotKey. Часть 2: Распознавание экрана. Автоматизация, Autohotkey, Длиннопост

Готово!


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


С уважением, netwizard.

Лига образования

4.3K поста21.8K подписчика

Добавить пост

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако мы хотим, чтобы соблюдались следующие условия:


ДЛЯ АВТОРОВ:


Приветствуются:

-уважение к читателю и открытость

-желание учиться

Не рекомендуются:

-публикация недостоверной информации


ДЛЯ ЧИТАТЕЛЕЙ:


Приветствуются:

-конструктивные дискуссии на тему постов

Не рекомендуются:

-личные оскорбления и провокации

-неподкрепленные фактами утверждения


В этом сообществе мы все союзники - мы все хотим учиться! :)

Вы смотрите срез комментариев. Показать все
9
Автор поста оценил этот комментарий

Это, конечно, прикольно, но для автоматизации есть вещи и посерьезнее. Например, RPA. Рассмотрим на примере софтины Blue Prism Automate, поскольку работаю я именно с ней.


С ее помощью можно автоматизировать что угодно, начиная от веб-приложений и заканчивая консольными приложениями мейнфреймов. Если автоматизируемое приложение слишком нестандартное, и встроенному application modeller не удается найти элеметны управления, то можно использовать surface automation, который будет попиксельно их искать как в посте ТС-а чекается статус игрока.


При этом все это можно реализовать, не написав ни одной строчки кода. В Blue Prism весь алгоритм работы робота составляется при помощи блок-схем, которые реализуют ряд простых функций типа манипуляций с элементами управления автоматизируемой программы и функций посложнее типа работы с электронной почтой, БД и т.д.


При необходимости можно реализовывать необходимый функционал при помощи небольших скриптов на C#, J# или VBA. Все это дает крайне мощные инструменты для автоматизации.

К примеру, при помощи встроенных библиотек и небольших самописных скриптов на C# можно автоматизировать MS Excel до такой степени, что человеку останется лишь только подсовывать ему новые данные для работы, а эксель сам будет себе шуршать отчеты и статистику

раскрыть ветку (7)
6
Автор поста оценил этот комментарий

а можете пост запилить? было бы интересно

Автор поста оценил этот комментарий

Где только эту софтину взять

раскрыть ветку (3)
2
Автор поста оценил этот комментарий

Только купить, т.к. это enterprise решение, но и цены там соответствующие)

раскрыть ветку (2)
2
Автор поста оценил этот комментарий

дополню для дочитавших сюда и огорчившихся: взамен можно взять бесплатный UiPath.

1
Автор поста оценил этот комментарий

а кем вы работаете, что все автоматизируете в этой программе?

я когда-то работала программистом VBA, автоматизировала всякие отчеты в экселе и делала консолидации и т.д.,все делалось через VBA, но было интересно.

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

1
Автор поста оценил этот комментарий
К примеру, при помощи встроенных библиотек и небольших самописных скриптов на C# можно автоматизировать MS Excel до такой степени, что человеку останется лишь только подсовывать ему новые данные для работы, а эксель сам будет себе шуршать отчеты и статистику

Внезапно(!) в MS Excel есть встроеный VisualBasic + макросы которые делают все то же самое, но слегка дешевле. Ой, тоесть совсем дешево. Бесплатно.


А за те деньги, которые стоит лицензия продукта, о котором вы столько всего расписали - его макросы должны за пивом бегать пока работают.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Эта платформа уже имеет встроенные возможности по работе с MS Excel, которая внезапно(!) использует ту же самую либу по работе с экселем . По факту, в реалиях Blue Prism это набор реализованных небольших макросов-функций (типовые задачи вроде открытия документа, внесения туда данных и т.д.), которые "обернуты" для удобного использования внутри этой самой платформы.


Но суть не в том.


Разумеется, что если ваш кейс подразумевает только простые манипуляции небольшими объемами данных в экселе, то вам к черту не сдался этот софт и хватит за глаза одних лишь макросов.


Но если вам необходимо, к примеру, регулярно обрабатывать клиентские выгрузки объемом по нескольку десятков миллионов строк, валидировать данные, а затем разносить их по еще нескольким системам и генерить какие-либо отчеты на основе проделанной работы с минимальным вовлечением человека на основе уже существующей в вашей компании инфраструктуры (софта и прочего), то RPA - ваш выбор.


Вам не потребуется написание и последующая поддержка специфического софта для автоматизации подобной задачи, лишь описание алгоритма автоматизируемого бизнес-процесса (реализация зависит от конкретного вендора RPA-платформ). Зато у вас в сухом остатке увеличение скорости выполнения работы, минимизация ошибок, возможность уменьшения штата сотрудников или их высвобождение для выполнения каких-либо более приоритетных задач.


Это решения, ориентированные на крупные компании вроде процессинговых центров, банков и т.д., а не абстрактные ООО "Моя оборона" со штатом в три с половиной человека.

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку