Автоматизация рутины с AutoHotKey. Часть 2: Распознавание экрана.
Небольшое продолжение к предыдущему посту
http://pikabu.ru/story/avtomatizatsiya_rutinyi_s_autohotkey_...
За прошедший год мое владение скриптами немного улучшилось, в частности, теперь я могу научить скрипт распознавать изображение на экране, искать всякие кнопки, рисунки и т.д.
Давайте попробуем какую-нибудь незатейливую программу, например игрушку сапер.
Научим скрипт реагировать на нашу смерть.
Делаем скриншот, открываем Пэйнт, и выделяем небольшой кусочек желтой рожицы.
Обрезаем и сохраняем в файл smert.png. Можно сохранять и в bmp и в jpg, Autohotkey кушает их всех.
Получился вот такой небольшой файлик:
Этот кусочек изображения и будет искать скрипт.
Теперь нам нужны координаты области на экране, где скрипт будет производить поиск. Можно, конечно, сказать скрипту сканировать весь экран, но это нерационально и наверняка будет приводить к задержкам в работе.
Запускаем этот скрипт:
^F1::
MouseGetPos, X, Y
Tooltip, %X% %Y%
Clipboard = %X%, %Y%
Sleep 1000
Tooltip
Return
При нажатии ctrl+F1 координаты курсора появятся на экране И скопируются в буфер обмена.
Наша задача: получить координаты вот этой области. А именно - координаты левого верхнего и правого нижнего углов. Подведите кончик курсора к ЛВ углу и нажмите Ctrl F1. Сохраните эти координаты. То же самое с ПН углом. (окно Сапера должно быть активным)
Теперь создайте следующий скрипт:
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 миллисекунд скрипт будет искать ваш файлик на экране.
Готово!
Показано, конечно, на пример простой игрушки, но возможности применения поистине безграничны. Автоматизация офисных приложений, игр, промышленность, дизайнерские программы, и т.п. и т.д. на что хватит фантазии.
С уважением, netwizard.
Лига образования
4.4K постов21.8K подписчиков
Правила сообщества
Публиковать могут пользователи с любым рейтингом. Однако мы хотим, чтобы соблюдались следующие условия:
ДЛЯ АВТОРОВ:
Приветствуются:
-уважение к читателю и открытость
-желание учиться
Не рекомендуются:
-публикация недостоверной информации
ДЛЯ ЧИТАТЕЛЕЙ:
Приветствуются:
-конструктивные дискуссии на тему постов
Не рекомендуются:
-личные оскорбления и провокации
-неподкрепленные фактами утверждения
В этом сообществе мы все союзники - мы все хотим учиться! :)