HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Общие вопросы программирования
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 10.10.2023, 06:46
Gafask
Участник форума
Регистрация: 10.12.2018
Сообщений: 137
С нами: 3908139

Репутация: 23
По умолчанию

Добрый день или ночь!🤌



Я хочу узнать о наличии библиотек на C++🧐, которые могут захватывать цвет пикселей даже из неактивных областей экрана. Другими словами, мне интересны библиотеки, которые могут получать информацию о цветах пикселей даже в тех окнах или областях экрана, которые находятся на заднем плане, и даже если поверх них запущены другие приложения. Примерами таких программ могут быть OBS и Fraps.


Заранее благодарю за помощь и рекомендации по этому вопросу!

🤡😶*🌫️😶*🌫️😶*🌫️👾

Да чё там, брат? Как дела, доброй ночи или чего? Слышь, кто-нибудь в курсе, где можно взять какие-то крутые библиотеки на C++, чтоб они, типа, цвета пикселей с экрана хватали? Да не просто так, а чтоб даже из тех окон, что неактивные, понимаешь? Чтоб они фигачили цвета пикселей, даже если вон сверху другие приложухи нафигачили.
👾😶*🌫️😶*🌫️😶*🌫️🤡
 
Ответить с цитированием

  #2  
Старый 26.10.2023, 18:34
Digger Man52
Познавший АНТИЧАТ
Регистрация: 14.07.2019
Сообщений: 1,097
С нами: 3596877

Репутация: 183


По умолчанию

[QUOTE="sazzas1978"]

C++:





[CODE]
#include
#include
int
main
(
)
{
int
targetColor
=
RGB
(
255
,
0
,
0
)
;
// Целевой цвет (красный в данном случае)
HWND hwnd
=
GetTopWindow
(
NULL
)
;
while
(
hwnd
!=
NULL
)
{
HDC hdc
=
GetDC
(
hwnd
)
;
RECT rect
;
GetClientRect
(
hwnd
,
&
rect
)
;
// Перебор всех пикселей в окне
for
(
int
x
=
rect
.
left
;
x

C++:





[CODE]
#include
#include
int
main
(
)
{
// короче для работы с опенцв
// нужно ему скрин экрана пихнуть
// это на винапи можно сделать
// потом короче нужно передать картинку в прогу
cv
::
Mat screen
=
cv
::
imread
(
"screenshot.png"
)
;
cv
::
Vec3b
target
(
0
,
0
,
255
)
;
// тут можно вьебать цикл
// который будет перебирать каждый х и y экрана,
// и проверять каждый пиксель, равен ли он нашему значению
// x и y достаются из нашего материала
// типо screen.cols - x
// screen.rows - y
// я пишу это с телефона, поэтому да,
// не буду ниче лишнего писать
cv
::
Vec3b PIXELCVET
=
screen
.
at

(
y
,
x
)
;
// и короче тут в этом цикле сразу сверяем
if
(
PIXELCVET
==
target
)
{
std
::
cout

 
Ответить с цитированием

  #3  
Старый 26.10.2023, 20:59
Digger Man52
Познавший АНТИЧАТ
Регистрация: 14.07.2019
Сообщений: 1,097
С нами: 3596877

Репутация: 183


По умолчанию

Цитата:
Сообщение от sazzas1978  

Основная суть задачи была в поиске пикселей во всех программах, даже свернутых, у тебя - чисто на скриншоте, минус моего кода - что долго исполняется, так как нужно применить многопоточность для cpu bound
(Обновил свой код)
у тебя все потоки ща будут обращаться к хдс и хвнд окна, получаем крутые гонки данных, когда несколько потоков пытаются получить доступ к контексту и окну, почему ты не сделал это через мьютексы? в твоей ситуации, лучше мьютексы юзать, что бы была некая синхронизация доступа к общим файлам
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.