Stack Overflow на русском Asked by YanShun on December 2, 2020
Задача – открываем вкладку браузера, и получаем цвет по координатам мыши (формат 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; // выводим
}
}
Нужно всего-лишь 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; // выводим
}
}
попробуйте это
Answered by AndryS1 on December 2, 2020
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP