Как упоминалось в предыдущем посте, вам нужна функция GetPixel из Win32 API.
GetPixel находится внутри gdi32.dll, поэтому, если у вас есть правильная настройка среды, вам следуетбыть в состоянии включить windows.h (который включает wingdi.h), и вы должны быть золотым.
Если у вас есть минимальная настройка среды по какой-либо причине, вы также можете использовать LoadLibrary непосредственно на gdi32.dll.
Первый параметр GetPixel - это дескриптор контекста устройства, который можно получить, вызвав функцию GetDC (которая также доступна через <windows.h>
).
Базовый пример, который загружает GetPixel изdll и распечатывает цвет пикселя, где бы ни находился ваш курсор, следующим образом.
#include<windows.h>
#include<stdio.h>
int main(int argc, char** argv)
{
FARPROC pGetPixel;
HINSTANCE _hGDI = LoadLibrary("gdi32.dll");
if(_hGDI)
{
pGetPixel = GetProcAddress(_hGDI, "GetPixel");
HDC _hdc = GetDC(NULL);
if(_hdc)
{
POINT _cursor;
GetCursorPos(&_cursor);
COLORREF _color = (*pGetPixel) (_hdc, _cursor.x, _cursor.y);
int _red = GetRValue(_color);
int _green = GetGValue(_color);
int _blue = GetBValue(_color);
printf("Red: 0x%02x\n", _red);
printf("Green: 0x%02x\n", _green);
printf("Blue: 0x%02x\n", _blue);
}
FreeLibrary(_hGDI);
}
return 0;
}