Автоматизация рутины с 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 подписчиков

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

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

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


ДЛЯ АВТОРОВ:


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

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

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

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

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


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


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

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

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

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

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


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

Вы смотрите срез комментариев. Показать все
15
Автор поста оценил этот комментарий
Следующий раз запили пост о скрипте который позволит пролайкать всю страницу в вк, включая записи на стене, фотки и видеозаписи.
раскрыть ветку (12)
20
Автор поста оценил этот комментарий

А потом, который дизлайкает все посты на страницах пикабушников

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

W, D, W, D?

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

4, 0, 4, 0

1
Автор поста оценил этот комментарий
Слишком скучно, пусть параллельно коментирует и показывает порно, а если ещё робо-руку присобачить, тогда вообще заебись будет
раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Ага. Будет..

Иллюстрация к комментарию
3
Автор поста оценил этот комментарий
Просто хочу завоевать сердце одной прекрасной дамы, но все времени нет. Скрипт бы помог.
раскрыть ветку (4)
5
Автор поста оценил этот комментарий

Для лайка всех постов скриншотишь сердечко, обрезаешь, сохраняешь.

Находишь координаты области, где обычно располагаются сердечки.

У мена получилось так:


F6::

Loop,

{

Loop, 3

{

ImageSearch, xp, yp, 573, 124, 640, 761, *50 heart.png

If xp > 0

Click %xp% %yp%

Sleep 200

}

Send {PgDn}

Sleep 1000

}

Return


F10::ExitApp


Скрипт пытается кликнуть до трех сердечек на экране, затем проматывает вниз, кликает еще и т.д.


Это для лайка постов.

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

До первой капчи =)

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

Капча намекает, что добиваться девушки лучше цветами и шоколадками, а не лайками.

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

Лайкать фотки можно руками. Стрелка вправо, клик мышкой. Очень быстро.

Автор поста оценил этот комментарий
Для этого лучше Selenium IDE использовать.
раскрыть ветку (1)
DELETED
Автор поста оценил этот комментарий

У вконтакте есть АПИ, можно туда Postman'ом заслать запросы.

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