 |

10.10.2023, 06:46
|
|
Участник форума
Регистрация: 10.12.2018
Сообщений: 137
С нами:
3908139
Репутация:
23
|
|
Добрый день или ночь!🤌
Я хочу узнать о наличии библиотек на C++🧐, которые могут захватывать цвет пикселей даже из неактивных областей экрана. Другими словами, мне интересны библиотеки, которые могут получать информацию о цветах пикселей даже в тех окнах или областях экрана, которые находятся на заднем плане, и даже если поверх них запущены другие приложения. Примерами таких программ могут быть OBS и Fraps.
Заранее благодарю за помощь и рекомендации по этому вопросу!
🤡😶*🌫️😶*🌫️😶*🌫️👾
Да чё там, брат? Как дела, доброй ночи или чего? Слышь, кто-нибудь в курсе, где можно взять какие-то крутые библиотеки на C++, чтоб они, типа, цвета пикселей с экрана хватали? Да не просто так, а чтоб даже из тех окон, что неактивные, понимаешь? Чтоб они фигачили цвета пикселей, даже если вон сверху другие приложухи нафигачили.
👾😶*🌫️😶*🌫️😶*🌫️🤡
|
|
|

26.10.2023, 18:34
|
|
Познавший АНТИЧАТ
Регистрация: 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
|
|
|

26.10.2023, 20:59
|
|
Познавший АНТИЧАТ
Регистрация: 14.07.2019
Сообщений: 1,097
С нами:
3596877
Репутация:
183
|
|
Сообщение от sazzas1978
Основная суть задачи была в поиске пикселей во всех программах, даже свернутых, у тебя - чисто на скриншоте, минус моего кода - что долго исполняется, так как нужно применить многопоточность для cpu bound
(Обновил свой код)
у тебя все потоки ща будут обращаться к хдс и хвнд окна, получаем крутые гонки данных, когда несколько потоков пытаются получить доступ к контексту и окну, почему ты не сделал это через мьютексы? в твоей ситуации, лучше мьютексы юзать, что бы была некая синхронизация доступа к общим файлам
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|