|
|
|
Findimage перекрытом окне |
|
|
neves |
19.12.2021, 18:14
|
Novice
Сообщений: 64
Регистрация: 4.10.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.419
Возраст: 19
|
Привет всем. Используя этот пример из документации findimage. Код --lua -- поиск нескольких одинаковых изображений -- если будет найдено больше 20 поиск прекратится, точность 70%, отклонение в цвете 5% local arr, a = findimage (0, 0, 1920, 1080, {"картинка.bmp"}, 2, 70, 20, 5) -- поиск картинки, должна быть в папке с пилотом hint (a) -- результат поиска, подсказка в правом нижнем углу if arr then -- если найдена log ("Найдено картинок: " .. #arr) for i=1, #arr do kleft (arr[i][1], arr[i][2]) -- кликнули на каждой wait (1000) -- пауза 1000 мсек (1 сек) end end
Как воссоздать одно и то же для работы в перекрывающемся окне? Последний пример в документации findimage показывает, как найти изображение в перекрывающемся окне. Я много чего пробовал, чтобы заставить его работать, но безуспешно. https://uopilot.uokit.com/wiki/index.php?ti...Findimage_(Lua)Простите за плохой русский язык. Я использую переводчик.
|
|
|
|
Madeus |
19.12.2021, 23:20
|
Apprentice
Сообщений: 283
Регистрация: 19.11.2019 Группа: Пользователи Наличность: 8465
Пользователь №: 19.451
Возраст: 32
|
Код --lua -- поиск нескольких одинаковых изображений -- если будет найдено больше 20 поиск прекратится, точность 70%, отклонение в цвете 5% local handle = findwindow('Firefox') if not handle then log('not found window') end local arr, a = findimage (0, 0, 1920, 1080, {"картинка.bmp"}, handle[1][1], 70, 20, 5) -- поиск картинки, должна быть в папке с пилотом hint (a) -- результат поиска, подсказка в правом нижнем углу if arr then -- если найдена log ("Найдено картинок: " .. #arr) for i=1, #arr do kleft (arr[i][1], arr[i][2]) -- кликнули на каждой wait (1000) -- пауза 1000 мсек (1 сек) end end
|
|
|
|
neves |
20.12.2021, 0:11
|
Novice
Сообщений: 64
Регистрация: 4.10.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.419
Возраст: 19
|
Цитата(Madeus @ 19.12.2021, 22:20) Код --lua -- поиск нескольких одинаковых изображений -- если будет найдено больше 20 поиск прекратится, точность 70%, отклонение в цвете 5% local handle = findwindow('Firefox') if not handle then log('not found window') end local arr, a = findimage (0, 0, 1920, 1080, {"картинка.bmp"}, handle[1][1], 70, 20, 5) -- поиск картинки, должна быть в папке с пилотом hint (a) -- результат поиска, подсказка в правом нижнем углу if arr then -- если найдена log ("Найдено картинок: " .. #arr) for i=1, #arr do kleft (arr[i][1], arr[i][2]) -- кликнули на каждой wait (1000) -- пауза 1000 мсек (1 сек) end end Спасибо, но это не работает при поиске изображений в определенном регионе. Например, у меня есть 17 изображений, расположенных в (437, 588, 652, 729), а ваш пример находит только 11.
|
|
|
|
cirus |
20.12.2021, 0:33
|
Elder
Сообщений: 3.480
Регистрация: 18.8.2014 Группа: Пользователи Наличность: 26708
Пользователь №: 16.971
Возраст: 29
|
Цитата 437, 588, 652, 729 Нужно прибавить к координатам высоту заголовка окна и толщину рамки окна. Код --lua local ffi = require("ffi") local GA_ROOTOWNER = 3 ffi.cdef[[ typedef unsigned int UINT; typedef unsigned long DWORD; typedef struct {long left; long top; long right; long bottom;} RECT; typedef struct {DWORD cbSize; RECT rcWindow; RECT rcClient; DWORD dwStyle; DWORD dwExStyle; DWORD dwWindowStatus; UINT cxWindowBorders; UINT cyWindowBorders; short atomWindowType; short wCreatorVersion; } WINDOWINFO, *PWINDOWINFO; int GetWindowInfo(int hWnd, PWINDOWINFO pwi); int GetAncestor(int hwnd, UINT gaFlags); ]]
log "clear" log "mode compact" local wi = ffi.new('WINDOWINFO', ffi.sizeof('WINDOWINFO')) local result = ffi.C.GetWindowInfo(ffi.C.GetAncestor(workwindow(), GA_ROOTOWNER), wi) local width = wi.rcClient.left - wi.rcWindow.left local height = wi.rcClient.top - wi.rcWindow.top
log(width, height) log(437+width, 588+height, 652+width, 729+height)
-- local arr, a = findimage (437+width, 588+height, 652+width, 729+height, .....
|
|
|
|
neves |
20.12.2021, 19:06
|
Novice
Сообщений: 64
Регистрация: 4.10.2019 Группа: Пользователи Наличность: 0
Пользователь №: 19.419
Возраст: 19
|
Цитата(cirus @ 19.12.2021, 23:33) Нужно прибавить к координатам высоту заголовка окна и толщину рамки окна. Код --lua local ffi = require("ffi") local GA_ROOTOWNER = 3 ffi.cdef[[ typedef unsigned int UINT; typedef unsigned long DWORD; typedef struct {long left; long top; long right; long bottom;} RECT; typedef struct {DWORD cbSize; RECT rcWindow; RECT rcClient; DWORD dwStyle; DWORD dwExStyle; DWORD dwWindowStatus; UINT cxWindowBorders; UINT cyWindowBorders; short atomWindowType; short wCreatorVersion; } WINDOWINFO, *PWINDOWINFO; int GetWindowInfo(int hWnd, PWINDOWINFO pwi); int GetAncestor(int hwnd, UINT gaFlags); ]]
log "clear" log "mode compact" local wi = ffi.new('WINDOWINFO', ffi.sizeof('WINDOWINFO')) local result = ffi.C.GetWindowInfo(ffi.C.GetAncestor(workwindow(), GA_ROOTOWNER), wi) local width = wi.rcClient.left - wi.rcWindow.left local height = wi.rcClient.top - wi.rcWindow.top
log(width, height) log(437+width, 588+height, 652+width, 729+height) -- local arr, a = findimage (437+width, 588+height, 652+width, 729+height, ..... Спасибо!
|
|
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|