如何获得光标下的像素颜色?

时间:2010-06-20 10:34:20

标签: visual-c++ gdi+ screen pixel

我需要一个快速命令行应用程序来返回鼠标光标下的像素颜色。

我如何在VC ++中构建它,我需要类似this的东西,但理想情况下不在.NET中,所以它可以每秒运行多次?

1 个答案:

答案 0 :(得分:12)

脱离我的头脑,直截了当的方式:

#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解决方案可在my SVN repository中找到。