Get color
Описание
Определяет цвет в заданных координатах.
Может находит цвет в перекрытых окнах.
Синтаксис
Привязка к окну: опционально.
Работа перекрытым окном: опционально.
Работа со свернутым окном: нет.
get color <#color> <#x> <#y> [handle] [abs]
<#color> - переменная, в которую запишется полученный цвет
<#x> - координата X
<#y> - координата Y
[handle] - хендл окна. Если указать, то цвет будет определяться и в перекрытом (не свёрнутом) окне. Как правило, требуется указывать родительское окно. Если возвращается 0 или 0x878787, скорее всего, указано не то окно.
[abs] - использовать абсолютные координаты.
При указании сразу обоих необязательных параметров 'handle' и 'abs', точка с координатами '#x, #y' должна попадать в заданное окно, иначе цвет не будет определен и команда вернет ошибку.
Примеры
// Пример 1 get color #color 100 150 // получаем цвет в координатах 100 150 msg #color
// Пример 2 get color #color 100 150 abs // получаем цвет в абсолютных координатах 100 150 msg #color
Примеры поиска цвета в перекрытом(не свёрнутом) окне:
Привязка к окну обязательна. Aero (темы Windows 7) должен быть включен. Если был установлен Астер, то он должен быть отключен, а система перезагружена.
Окно может быть перекрыто полностью, частично или вообще не перекрыто. Может находиться за пределами экрана. В Windows 10 работает не во всех приложениях, может потребоваться установка Aero Glass.
Учтите, что цвет может определяться со смещением, т. е. не в тех координатах. Если возвращает 0, скорее всего нужно указать родительское окно (обычно это заголовок или рамка).
Иногда, к проверяемым координатам нужно прибавлять размеры рамки окна.
Иногда, к проверяемым координатам нужно прибавлять смещение между родительским и дочерним окном. Узнать можно с помощью скрипта: Смещение между окнами.
Вместо get color можно использовать Findcolor.
// Пример 3 get color #color 100 150 workwindow // получаем цвет в координатах 100 150, окно может быть перекрыто msg #color
// Пример 4 set #handle FindWindow (Lineage 2) // находим окно Lineage 2 set #xDelta 8 // размер рамки по X set #yDelta 30 // размер рамки по Y init_arr %a (1) 157 41 2897277 // координаты и цвет (элементы %a [1 1] %a [1 2] %a [1 3]) set #x %a [1 1] + #xDelta // прибавляем к координате X размер рамки по X set #y %a [1 2] + #yDelta // прибавляем к координате Y размер рамки по Y :start get color #color #x #y #handle // получаем цвет из координат 157 41, окно может быть перекрыто hint Полученный цвет: #color, искомый цвет %a [1 3] if #color = %a [1 3] // если цвет найден log Цвет найден wait 100 end_if goto start
// Пример 5 // Небеса: уникальная игра, открытая в браузере Opera set #handle FindWindow (Небеса: уникальная игра! - Игра — Opera) // находим окно // смещение можно узнать скриптом: Смещение между окнами set #xDelta 8 // смещение между окнами по X set #yDelta 78 // смещение между окнами по Y init_arr %a (1) 1026, 647 15990015 // координаты и цвет (элементы %a [1 1] %a [1 2] %a [1 3]) set #x %a [1 1] + #xDelta // прибавляем к координате X смещение по X set #y %a [1 2] + #yDelta // прибавляем к координате Y смещение по Y :start get color #color #x #y #handle // получаем цвет, окно может быть перекрыто hint Полученный цвет: #color, искомый цвет %a [1 3] if #color = %a [1 3] log Цвет найден wait 100 end_if goto start
Смотрите также
История развития
2.00
Добавил возможность занесения в переменную цвета точки, по заданным координатам на экране, с помощью ключевого слова Сolor в команде Get.
get color #color #x #y [abs]
При указании ключевого слова abs, координаты берутся относительно экрана, иначе относительно прикрепленного окна. Если цвет определить не удалось, то переменная будет содержать значение -1. Если переменная ранее не существовала, то она создается.
2.18
Подправил 'Get Color' для работы с линейкой.
2.19
Пока отключил альтернативный способ определения цвета в 'get color'.
2.23
Починил конструкцию вида 'get color #c %ar[1 1] %ar[1 2]' сломанную в версии 2.20.
Повысил стабильность работы 'get color'
2.32
Добавил в 'get color' возможность искать цвет в перекрытых окнах, при указании хэндла подопытного окна. Слегка изменился синтаксис 'get color #color #x #y [handle] [abs]'. При указании сразу обоих необязательных параметров 'handle' и 'abs', точка с координатами '#x, #y' должна попадать в заданное окно, иначе цвет не будет определен и команда вернет ошибку.