Описанные ниже функции внедрены Clickermann начиная с версии 3.1. С их помощью можно видеть то, что происходит на экране. То есть они образуют как бы глаза программы.
SCREENSHOT — снятие скриншота экрана. Скриншот помещается в подпапку screens папки программы в формате bmp. Всего в этой папке может находиться до 9999 файлов.
GETSCREEN — похожая на предыдущую функция, но она помещает снимок экрана в память программы, а не на жесткий диск.
IF_PIXEL(X,Y, ЦВЕТ) — если точка [X,Y] имеет указанный цвет, то выполняются инструкции между IF_PIXEL и END_IF
Имеется и функция для отрицательного анализа – IF_NOT_PIXEL.
IF_PIXEL_IN(X1, Y1, X2,Y2, ЦВЕТ) — похожая на предыдущую функция, но работает в случае, когда координаты нужного пикселя заранее неизвестны. Например, когда объект двигается. Производит поиск в заданной области (X1, Y1, X2,Y2) первого попавшегося пикселя нужного цвета. Координаты найденного пикселя помещаются в системные переменные $_return1 (для Х) и $_return2 (для У). Используя эти переменные вы получите точку, которую искали.
Инструкция использует для поиска прямоугольную область экрана, где верхняя левая точка прямоугольника задается через X1,Y1, а правая нижняя соответственно через X2,Y2.
Это очень ресурсоемкая функция, которая существенно задерживает сценарий. Для сканирования экрана 1024х768 уходит около 6 секунд. Поэтому чем меньше область поиска вы зададите, тем быстрее она будет работать.
Цвет
Цвет задается строковой константой в шестнадцатеричном виде. #000000 – это черный цвет, а #ffffff – белый цвет. А, например, #0000FF – синий цвет. Значение цвета для точки можно узнать в редакторе сценария. Он показывает значение для точки под курсором.
Перед использованием описанных инструкций нужно сделать снимок экрана при помощи GETSCREEN. Таким образом анализируется не текущее состояние экрана, а последний снимок, сделанный через GETSCREEN.
Надо учитывать, что если сценарий большой или в нем есть временные задержки, то текущее состояние экрана может отличаться от полученного через GETSCREEN последний раз.
Пример скрипта для анализа пикселей. Этот фрагмент делает снимок экрана, анализирует его в двух точках. Если они соответствуют цвету #F23A41, в эти точки осуществляется клик.
GETSCREEN IF_PIXEL(10,20, #F23A41) LCLICK(10,20) END_IF IF_PIXEL(20,20, #F23A41) LCLICK(20,20) END_IF
Не работает это – если у вас больше одного монитора!