Get color

Материал из UoPilot
Перейти к навигации Перейти к поиску

Описание

Определяет цвет в заданных координатах.
Может находит цвет в перекрытых окнах.

Синтаксис

Привязка к окну: опционально.
Работа перекрытым окном: опционально.
Работа со свернутым окном: нет.

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

Смотрите также

Color
Findcolor
Findimage
If

История развития

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' должна попадать в заданное окно, иначе цвет не будет определен и команда вернет ошибку.