Определение цвета пикселя в координатах (получение хэндала)
Задача - открываем вкладку браузера, и получаем цвет по координатам мыши (формат RGB, но получаем только R, ибо остальное нам не нужно). Цвета я получаю, координаты тоже, но программа получает цвет из какой-то другой вкладки. Тогда как узнать какой хендл окна мне нужен, чтобы программа работала корректно? Работаю через Yandex браузер. (Не понимаю, как получать цвет координат с окна) Код:
BYTE R, G;
HWND Handle;
Handle = FindWindow(L"Yandex", NULL);
HDC hdc = GetDC(Handle);
int x, y;
POINT cursor;
while (1)
{
if (GetCursorPos(&cursor)) //получаем координаты курсора
{
x = cursor.x; // инициализируем x, y координатам курсора
y = cursor.y;
COLORREF color = GetPixel(hdc, x, y); // получаем цвет по координатам
R = GetRValue(color); // инициализируем цвет
std::cout << cursor.x << " " << cursor.y << " " << (unsigned int)R << std::endl; // выводим
}
}
Ответы (1 шт):
Автор решения: AndryS1
→ Ссылка
Нужно всего-лишь ScreenToClient, чтобы перевести координаты экрана, в координаты окна (GetPixel работает относительно окна)
BYTE R, G;
HWND Handle;
Handle = FindWindow(L"Yandex", NULL);
HDC hdc = GetDC(Handle);
int x, y;
POINT cursor;
while (1)
{
if (GetCursorPos(&cursor)) //получаем координаты курсора
{
ScreenToClient(Handle, &cursor);
x = cursor.x; // инициализируем x, y координатам курсора
y = cursor.y;
COLORREF color = GetPixel(hdc, x, y); // получаем цвет по координатам
R = GetRValue(color); // инициализируем цвет
std::cout << cursor.x << " " << cursor.y << " " << (unsigned int)R << std::endl; // выводим
}
}
попробуйте это