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

> Поиск цвета в перекрытом окне
MixidFinder
сообщение 13.11.2020, 1:11
Сообщение #1


*

Registred
Сообщений: 9
Регистрация: 15.9.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 16.321
Возраст: 23



Здравствуйте, посмотрев пару тем с такой же проблемой, решения так и не нашел. Суть в том, что бы пилот находил цвет пикселя в перекрытом окне, но он его не видит, причем даже если перекрыть это окно совсем немного в том месте, где нужно найти пиксель. Тоесть сама графика в окне спокойно работает, но при этом пилот не видит цвета в том месте, где другое окно перекрыло рабочее. Возможно ли все же решить как то эту проблему?
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
cirus
сообщение 13.11.2020, 3:48
Сообщение #2


**********

Elder
Сообщений: 3.480
Регистрация: 18.8.2014
Группа: Пользователи
Наличность: 26365
Пользователь №: 16.971
Возраст: 29



Скрин нормально сделает с окна?
Скрин окна
Код
--lua
local ffi = require("ffi")
local shell = ffi.load('Shell32.dll')
local C = ffi.C
local GA_ROOTOWNER = 3
local SW_SHOW = 5
ffi.cdef[[
    int GetAncestor(int hwnd, unsigned int gaFlags);
    typedef struct { long left; long top; long right; long bottom;} RECT;
    typedef struct { int cbSize; RECT rcWindow; RECT rcClient; int dwStyle; int dwExStyle;
        int dwWindowStatus; int cxWindowBorders;  int cyWindowBorders; short atomWindowType; short wCreatorVersion;} WINDOWINFO;
    bool GetWindowInfo(int hwnd, WINDOWINFO* pwi);
    int ShellExecuteA(int hwnd, const char* lpOperation, const char* lpFile, const char* lpParameters, const char* lpDirectory, int nShowCmd);
]]
local wi = ffi.new('WINDOWINFO')
C.GetWindowInfo(C.GetAncestor(workwindow(), GA_ROOTOWNER), wi)
local pos_client_x = wi.rcClient.left - wi.rcWindow.left
local pos_client_y = wi.rcClient.top - wi.rcWindow.top
local width_client = wi.rcClient.right - wi.rcClient.left
local height_client = wi.rcClient.bottom - wi.rcClient.top


-- привязка к окну Ctrl+A
local path_to_screen = [[C:\window.bmp]]  -- путь для скрина
printscreen (C.GetAncestor(workwindow(), GA_ROOTOWNER), pos_client_x, pos_client_y, width_client, height_client, path_to_screen)
shell.ShellExecuteA(0, 'open', path_to_screen, '', '', SW_SHOW)
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
MixidFinder
сообщение 13.11.2020, 15:55
Сообщение #3


*

Registred
Сообщений: 9
Регистрация: 15.9.2013
Группа: Пользователи
Наличность: 0
Пользователь №: 16.321
Возраст: 23



Цитата(cirus @ 13.11.2020, 3:48) *

Скрин нормально сделает с окна?


Да, все норм, даже если чем то перекрыть, тоже все отлично

Цитата(DarkMaster @ 13.11.2020, 7:05) *

А код ваш можно увидеть? Методом поиска должен быть указан хэндл.
Обычно оно или работает всегда или не работает никогда(для конкретного приложения) =)


Код собственно простейший

Код
left 447, 911 5 5
if color (272, 456) = 4406046
    left 273, 453 5 5
end_if


Привязываю в ручную к окну через хоткей

Сообщение отредактировал DarkMaster - 13.11.2020, 17:16
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
MixidFinder   Поиск цвета в перекрытом окне   13.11.2020, 1:11
DarkMaster   А код ваш можно увидеть? Методом поиска должен быт...   13.11.2020, 7:05
DarkMaster   Когда вы хотите дергать с перекрытого окна, то ва...   13.11.2020, 17:16
MixidFinder   Когда вы хотите дергать с перекрытого окна, то ва...   13.11.2020, 17:36
DarkMaster   Извиняюсь, запамятовал. Там был какой-то косяк с c...   13.11.2020, 20:47
MixidFinder   Извиняюсь, запамятовал. Там был какой-то косяк с ...   13.11.2020, 22:47
cirus   --lua local ffi = require("ffi") l...   14.11.2020, 1:55
DarkMaster   указывайте хэндл в методе поиска   14.11.2020, 7:27
MixidFinder   указывайте хэндл в методе поиска left 447, 911 ...   14.11.2020, 11:32
DarkMaster   Массив где? // Пример 3 set #c findcolor ( 33...   14.11.2020, 12:00
MixidFinder   Массив где? // Пример 3 set #c findcolor ( 33...   14.11.2020, 12:40
DarkMaster   В целом зачастую можно сделать привязку к родитель...   14.11.2020, 14:15
MixidFinder   В целом зачастую можно сделать привязку к родител...   14.11.2020, 14:27
DarkMaster   в шапку set #offset_x 10 set #offset_y 10 где-то ...   14.11.2020, 15:02
MixidFinder   в шапку set #offset_x 10 set #offset_y 10 где-то...   14.11.2020, 15:10
DarkMaster   настройки/настройки/mouse/отображать координаты ку...   14.11.2020, 15:33
umba   Здравствуйте. Имею похожую ситуацию, как у автора....   4.1.2021, 12:03
cirus   Вместо nox попробуйте LDPlayer.   4.1.2021, 13:07
umba   Вместо nox попробуйте LDPlayer. Тоже на NOX гре...   4.1.2021, 13:18
Sidorak   Здравствуйте, имеется несколько схожая проблема, п...   28.4.2021, 7:06
Sidorak   Дополнение - при логировании хендла окна после поп...   28.4.2021, 7:21
cirus   В windows 10. Использовать другой браузер или зап...   28.4.2021, 11:00
Sidorak   Благодарю за помощь - на хроме к сожалению и режим...   2.5.2021, 5:44


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

 

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