Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в эту темуОткрыть новую тему
> Функции FindImage and GetImage, Нужна помощь
Dragles
сообщение 21.1.2019, 13:49
Сообщение #1


*

Registred
Сообщений: 1
Регистрация: 21.1.2019
Группа: Пользователи
Наличность: 0
Пользователь №: 19.196
Возраст: 2



Привет. Я новичок , и мне нужна помощь от опытных пользователей.
Я изучил справочник по командам , но не все есть понятно.
Хотелось бы подробного ответа на мою суть проблемы.

Мне необходимо чтобы в определенном окне производился поиск изображения (изображения будет хранится на моем пк). Мне без разницы будет то поиск по какой то заданной области или же по всей области окна сразу.
После того как изображение было найдено, необходимо нажать на это изображение (наверно по координатам) со смещением в нужную мне сторону на нужное количество пикселей.
И самое главное чтобы поиск работал в перекрытом окне( не свернутом).

Я перепробовал не сколько способов , в каких то случаях поиск работал в каких то нет, но поиск в перекрытом окне ни разу не сработал.

В данном случае находил нужное мне изображение и кликал с заданным значением. Но в перекрытом окне не работал. Так же я написал комментарии к которым хотел бы получить развернутый ответ, мне не понятны не которые строки и что они значат.
Вот код:


set %a GetImage (5 5 887 764) // Что значат числа в скобках?
set #type %a [1 1] // Что значит данная строка?
set #a findimage (0 0 901 901 (C:\Users\Mucmp\Desktop\test.bmp) %arr #type 80 2) // Что значат "0 0 901 901" и #type ?

f #a > 0
set Clickoffsetx 50
set Clickoffsety 30
left %arr [1 1] %arr [1 2]
end_if

По идеи здесь нет ничего сложного. И подскажите как то можно записать код смещение координат короче и возможно на одной строке с командой left

Ждут ответов , спасибо (IMG:style_emoticons/default/smile.gif)



















Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.1.2019, 19:16
Сообщение #2


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Код
set #okno FindWindow ("Яндекс.Браузер")  // Поиск хендла окна браузера Яндекса
// ВАЖНО - получение образа в память делаем в КОНКРЕТНОМ окне которое я нашёл (#okno)
set %a GetImage (5 5 887 764 #okno)      // Создаём образ в памяти начиная с координат 5 5 и заканчивая 887 764
set #type %a [1 1]                       // Это адрес в памяти, его подсунем в качестве параметра типа поиска
// далее я ищу СВОЮ картинку с пиктограммой перезагрузки браузера
// 0 0 400 200 - координаты поиска они относительные, то есть 0 0 с левого верхнего угла образа картинки
// реально поиск будет проводиться с координат 5 5 как взял образ GetImage
set #a FindImage(0 0 400 200 (СКРИНЫ\_PRG.bmp) %arr #type 80 1 7)
set $b DeleteImage  (%a [1 1])           // удаляем образ ЧИСТИМ (ОСВОБОЖДАЕМ) память
if #a > 0
set Clickoffsetx 5
set Clickoffsety 3
left %arr [1 1] %arr [1 2]  #okno  // кликаю на перезагрузку браузера
end_if
end_script
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 22.1.2019, 19:42
Сообщение #3


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



При указании хендла окна и захват экрана, а значит и поиск, а также и клик будет работать в перекрытом окне. И даже в НЕ РАБОЧЕМ, а в любом другом окне.

Если Ваш скрипт работает в рабочем окне, то есть Вы делали привязку к окну используя CTRL-A, то вместо хендла можете указывать переменную workwindow без знака #.

Цитата
И подскажите как то можно записать код смещение координат короче и возможно на одной строке с командой left
Нет, каждый оператор на новой строке. Если будете использовать вместо встроенного языка LUA, то там можно на одной строке использовать несколько операторов.


И более того, в lua можно внутри операторов использовать любые допустимые выражения, например left(x+5, y*3+7).
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 22.1.2019, 22:48
Сообщение #4


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
И самое главное чтобы поиск работал в перекрытом окне

Это зависит от приложения. Left либо работает либо нет.
Цитата

set %a GetImage (5 5 887 764) // Что значат числа в скобках?

Область поиска, задана в координатах(пиксели) от левого верхнего угла приложения.
Цитата
set #type %a [1 1] // Что значит данная строка?

Запись в переменную #type значения из таблицы %a. Не везде в старом синтаксисе возможно использовать массивы напрямую. В данном случае это указатель на изображение.

Чтобы работал поиск в перекрытом нужно делать забор изображения по хендлу. В данном случае в getimage не хватает хендла из которого нужно получить изображение. Проверить возможность получения изображения по хендлу можно нажав кнопку "F" в верхней части пилота(возможно придется сделать окно пошире, чтобы увидеть), затем навести мышку на целевое окно _но_не_кликать_, окно пилота должно оставаться активным, нажать Ctrl+a. После этого вы должны увидеть копию изображения, в лог напишется путь к окну с которого было снято изображения, т.к. иногда нужно снимать изображение с родительского.


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
sutra
сообщение 23.1.2019, 3:18
Сообщение #5


*******

Adept
Сообщений: 923
Регистрация: 10.8.2018
Группа: Пользователи
Наличность: 0
Пользователь №: 19.007



Цитата
Это зависит от приложения. Left либо работает либо нет.
Дарк, я могу конечно ошибаться, но наверное, если left РАБОТАЛ в не перекрытом окне, то будет работать и в перекрытом. Во всяком случае с указанием хендла у меня работает, хотя я сегодня в первый раз кликал в перекрытом окне.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
DarkMaster
сообщение 23.1.2019, 4:42
Сообщение #6


***********

Модератор UOPilot
Сообщений: 9.460
Регистрация: 2.12.2008
Группа: Супермодераторы
Наличность: 27708
Пользователь №: 11.279



Цитата
Дарк, я могу конечно ошибаться, но наверное, если left РАБОТАЛ в не перекрытом окне, то будет работать и в перекрытом.

Справедливо только обратное: если left работал в перекрытом, то будет работать и в активном. В частности некоторые приложения вообще потоки замораживают, если находятся не в фокусе. Т.е. при таком подходе невозможно снять изображение, отослать клик, вообще ничего невозможно сделать. Так же часть приложений просто отключает по каким-то идейным соображениям получение нажатий.

Сообщение отредактировал DarkMaster - 23.1.2019, 4:43


--------------------
Скрипты UOPilot под заказ.
Консультации по UOpilot 15$/час.
Услуги Lua разработчика (не пилот, проекты, постоянка)
Disсоrd:
Kov____
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Ответить в эту темуОткрыть новую тему
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 28.3.2024, 17:01
Designed by Nickostyle