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

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

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

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


ДЛЯ АВТОРОВ:


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

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

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

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

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


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


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

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

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

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

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


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

Вы смотрите срез комментариев. Показать все
Автор поста оценил этот комментарий
Кто посоветует нормальную прогу для создания горячих клавиш на определенные действия, вроде увеличения звука или запуск браузера? Что бы работало всегда, независимо от активного приложения.
Мультимедийных клавиш нету на клавиатуре
раскрыть ветку (4)
1
Автор поста оценил этот комментарий

F1::Send {Volume_Down}

F2::Send {Volume_Up}

F4::Send {Browser_Home}


При нажатии соответствующих клавиш регулируется звук и запускается браузер.

Полный список мультимедийных клавиш тут

https://autohotkey.com/docs/KeyList.htm

в разделе мультимедиа.


Клавишей вызова можно назначить любую другую клавишу, например {Tab}, {Backspace}, либо буквенные клавиши, но к ним лучше обращаться по их виртуальному коду, читайте первую часть этой статьи.

Также можно использовать сочетания клавиш.


Я использую

^!Right::Send {Volume_Up}

^!Left::Send {Volume_Down}


это Ctrl Alt стрелка влево и вправо.

Автор поста оценил этот комментарий
Autohotkey так может,  причем можно скомпилировать в исполняемый файл, и пользоваться переназначением даже в отсутствии установленной программы, можно задать хоткей на прерывание, чтобы отключать или включать переназначение
раскрыть ветку (1)
Автор поста оценил этот комментарий

Я давно ищу такую программку. Но под Mac их просто нет(((

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