Как получить цвет пикселя под курсором? - PullRequest
4 голосов
/ 20 июня 2010

Мне нужно приложение для быстрой командной строки, чтобы вернуть цвет пикселя под курсором мыши.

Как я могу построить это в VC ++, мне нужно что-то похожее на это , но в идеале не в .NET, поэтому его можно запускать много раз в секунду?

1 Ответ

12 голосов
/ 20 июня 2010

С макушки головы, прямой путь:

#include <stdio.h>
#include <Windows.h>

int main(void) {
    POINT p;
    COLORREF color;
    HDC hDC;
    BOOL b;

    // Get the device context for the screen
    hDC = GetDC(NULL);
    if (hDC == NULL)
        return 3;

    // Get the current cursor position
    b = GetCursorPos(&p);
    if (!b)
        return 2;

    // Retrieve the color at that position
    color = GetPixel(hDC, p.x, p.y);
    if (color == CLR_INVALID)
        return 1;

    // Release the device context again
    ReleaseDC(GetDesktopWindow(), hDC);

    printf("%i %i %i", GetRValue(color), GetGValue(color), GetBValue(color));
    return 0;
}

ETA: Кажется, работает, по крайней мере для меня.

ETA2: Добавлена ​​проверка некоторых ошибок

ETA3: Комментированный код, скомпилированный исполняемый файл и решение Visual Studio можно найти в моем хранилище SVN .

...