2016-10-07 9 views
0

Я пытаюсь захватить координаты для определенного значения пикселя на экране, но я не могу получить никаких результатов. Ошибка, которую я получаю, это «autoit.autoit.AutoItError: цвет не найден».autoit.pixel_search возвращающий цвет не найден

Чтобы проверить свой код, у меня есть мышь, перемещающая пиксель с цветом, который я хочу. Это не обязательно, это была всего лишь часть теста. У меня есть два монитора, и я опасался, что поиск по пикселям не сможет отличить тот монитор, который я хотел. Поэтому, чтобы проверить, что аурит знает, где искать, я сделал базовую «движущуюся мышь». Конечно, он переместился на мое изображение на мониторе, поэтому я знаю, что у него есть правильный монитор.

Во-вторых, я тестировал, если «autoit.pixel_get_color» может захватить значение, которое я хотел, он делает (65281). Думаю, мне, возможно, придется использовать десятичную строку вместо HEX, предоставленной из приложения Windows Info.

Я тестировал код ниже, это код с использованием SciTE - light (.au3 file), и он отлично работает.

$coord = PixelSearch(0, 0, 1434, 899, 0x00FF02) 

If Not @error Then 
    MsgBox(0, "X and Y are:", $coord[0] & "," & $coord[1]) 
EndIf 

Я проверил захватывая пиксель pyautogui и в конечном счете, я могу это сделать, но это не так, как «чистый», как AutoIt, так что я пытаюсь избежать, если это возможно. В Autoit есть тот приятный экран информации о окне, который показывает мне цвет, поэтому очень просто просто подключить числа к моему сценарию.

Вот код, который я написал в настоящее время на Python.

import autoit 

import pyautogui 

pyautogui.confirm('Press OK to start running script') 

autoit.mouse_move(374,608,10) # move mouse to where the color I want is located. 

pixelcolor = autoit.pixel_get_color(374,608) #get color of pixel 

pixelsearch = autoit.pixel_search(0,0,1434,899,0x00FF02) # search entire screen for color 

pixelsearch = autoit.pixel_search(0,0,1434,899,65281) # Tried using the value from the get_color, still same error. 

Любые идеи?

+0

Немой вопрос, но делает 'autoit.mouse_move (374,608,10)' покрывает пиксель указателем мыши? –

+0

Нет, нет. Мышь перемещается в середину большого окна, поэтому поиск по пикселям будет находить другие подходящие пиксели задолго до того, как он попадет туда, где находится мой курсор. Я также прокомментировал код и протестировал его на предмет безопасности, все еще ту же ошибку. – Thomas

+0

Я установил 'pyautoit' и подтвердил, что получаю ту же ошибку. –

ответ

1

Итак, я понял, как решить мою проблему. Я не знаю, почему это работает или что вызвало проблему, но на данный момент вот решение

Правильная формула для PixelSearch - PixelSearch (левая, верхняя, правая, нижняя).

После игры с цифрами, которые появляются, используется pyautoit (справа, сверху, слева, внизу). Если я подключу свои номера с помощью этой формулы, он отлично работает, ЗА ИСКЛЮЧЕНИЕМ на моем третьем мониторе.

Мой третий монитор, похоже, работает с (левый, верхний, правый, нижний). Мне интересно, связано ли это с отрицательными номерами (-1680, 0, -3, 1050), а не на 100% уверенным.

Я тестировал это на своем рабочем компьютере (два монитора), домашнем компьютере, (три монитора) и моем ноутбуке. Во всех сценариях работали (справа, сверху, слева, внизу), кроме домашнего компьютера на третьем мониторе.

Надеюсь, что это поможет кому-то еще в будущем.

+0

Удивительно и, возможно, повезло, что вы смогли найти его на основе экспериментов! Я не смотрел код для PyAutoIt, но если он действительно закручивает порядок параметров, я бы назвал это ошибкой. Это было бы согласуется с тем, что вы не получили такую ​​же проблему с PyAutoGUI. Кстати говоря, PyAutoGUI демонстрирует ту же самую причуду, где она работает по-другому на вашем третьем мониторе? –

Смежные вопросы