Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

UoKit.com Форумы _ UO Pilot _ Вопрос

Автор: Rolya 24.1.2017, 4:20

Доброго времени суток! Знатоки, подскажите, как разобраться с активным окном.
Есть задача(в браузере): нажимать на кнопку, потом она открывает новое окно, новое окно надо сделать "ворквиндов", что бы скрипт нашел картинку и кликнул по ней.
Сделал в таком виде, но оно не работает из-за неактивного окна на котором долно искать картинку.

Цитата
left 751, 556 abs
wait 4000
set #handle FindWindow(Фото)
set #a FindImage(0 0 1920 1080 (C:\instasub.bmp) %arr #handle)
if #a > 0
left %arr [1 1] %arr [1 2] #handle
end_if
wait 1000
sendex ^{w}
wait 3000

Автор: cirus 24.1.2017, 14:15

Картинку нужно искать в активном окне или нет?
Не работает - это не самое корректное описание проблемы. Может окно не находится, может картинка не находится, может клик не туда делается. Ещё полно причин можно найти. Давайте по порядку.
Открываем окно, в котором ищем картинку. Запускаем скрипт:

Код
set #a FindImage(0 0 1920 1080 (C:\instasub.bmp) %arr)     // искать будет в активном окне
if #a > 0
    hint #a     Картинка найдена
else
    hint #a      Картинка не найдена
end_if
end_script

Проверяем находится ли вообще картинка.
Тоже самое с поиском окна:
Код
set #handle FindWindow(Фото)
log #handle
end_script

Проверяем находится ли окно и нужное ли оно по хендлу.
Перед кликом можно добавить move, чтобы было видно куда вообще кликает:
Код
move %arr [1 1] %arr [1 2] #handle
left %arr [1 1] %arr [1 2] #handle


И это - wait 4000, не самый лучший способ дождаться появления окна.
Код
set #handle 0
while #handle = 0                            // ждать пока окно не найдено
    set #handle FindWindow(Фото)
    wait 100
end_while
wait 500  // подождать, чтобы окно успело открыться

Автор: Rolya 24.1.2017, 16:55

Цитата(cirus @ 24.1.2017, 15:15) *

Картинку нужно искать в активном окне или нет?
Не работает - это не самое корректное описание проблемы. Может окно не находится, может картинка не находится, может клик не туда делается. Ещё полно причин можно найти. Давайте по порядку.
Открываем окно, в котором ищем картинку. Запускаем скрипт:
Код
set #a FindImage(0 0 1920 1080 (C:\instasub.bmp) %arr)     // искать будет в активном окне
if #a > 0
    hint #a     Картинка найдена
else
    hint #a      Картинка не найдена
end_if
end_script

Проверяем находится ли вообще картинка.
Тоже самое с поиском окна:
Код
set #handle FindWindow(Фото)
log #handle
end_script

Проверяем находится ли окно и нужное ли оно по хендлу.
Перед кликом можно добавить move, чтобы было видно куда вообще кликает:
Код
move %arr [1 1] %arr [1 2] #handle
left %arr [1 1] %arr [1 2] #handle


И это - wait 4000, не самый лучший способ дождаться появления окна.
Код
set #handle 0
while #handle = 0                            // ждать пока окно не найдено
    set #handle FindWindow(Фото)
    wait 100
end_while
wait 500  // подождать, чтобы окно успело открыться



Проблемма на этапе поиска картинки. 1) открываю окно, принт скрином делаю скриншот и вставляю в пейнт, вырезаю ту кнопку, на которую надо нажать, сохраняю в бмп 24, кидаю в папку, запускаю скрипт, находит, пишет хинт 100, ок, поехали дальше, открываю такое же окно только профиль другого человека, запускаю скрипт, пишет 0, но картинка кнопки не могла же измениться (это же инстаграм)

Автор: cirus 24.1.2017, 17:29

Скиньте картинку, которую ищите и которая не находится в bmp. Даже не сомневаюсь что при увеличении они будут отличаться.

Автор: Rolya 24.1.2017, 17:50

Цитата(cirus @ 24.1.2017, 18:29) *

Скиньте картинку, которую ищите и которая не находится в bmp. Даже не сомневаюсь что при увеличении они будут отличаться.



Прикрепленные файлы
Прикрепленный файл  instasub.bmp ( 5,37 килобайт ) Кол-во скачиваний: 125

Автор: cirus 24.1.2017, 18:46

Там буквы немного отличаются по цвету.
Лучше искать рамку, а не слово.
Прикрепленный файл  instasub1.bmp ( 12,69 килобайт ) Кол-во скачиваний: 186

Картинку с рамкой лучше сами сделайте, эта может не находиться, т. к. на разных компах изображения могут отличаться.
Также можно добавить параметры для Findimage, точность поиска и погрешность по цвету.

Код
set findoffsetx 30   // смещение для клика по X, подобрать нужное
set findoffsety 10            // смещение для клика по Y
set #a FindImage(0 0 1920 1080 (C:\instasub.bmp) %arr 2 50 1 10)
// 50 - это точность поиска, 10 - % отклонения в цвете

Автор: Rolya 25.1.2017, 15:43

Цитата(cirus @ 24.1.2017, 19:46) *

Там буквы немного отличаются по цвету.
Лучше искать рамку, а не слово.
Прикрепленный файл  instasub1.bmp ( 12,69 килобайт ) Кол-во скачиваний: 186

Картинку с рамкой лучше сами сделайте, эта может не находиться, т. к. на разных компах изображения могут отличаться.
Также можно добавить параметры для Findimage, точность поиска и погрешность по цвету.
Код
set findoffsetx 30   // смещение для клика по X, подобрать нужное
set findoffsety 10            // смещение для клика по Y
set #a FindImage(0 0 1920 1080 (C:\instasub.bmp) %arr 2 50 1 10)
// 50 - это точность поиска, 10 - % отклонения в цвете


спасибо, буду пробовать

Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)