2010-06-20 9 views
4

J'ai besoin d'une application de ligne de commande rapide pour retourner la couleur du pixel sous le curseur de la souris.Comment obtenir la couleur du pixel sous le curseur?

Comment puis-je construire cela dans VC++, j'ai besoin de quelque chose de similaire à this, mais idéalement pas dans .NET afin qu'il puisse être exécuté plusieurs fois par seconde?

Répondre

12

Du haut de ma tête, la manière simple:

#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: semble fonctionner, au moins pour moi.

ETA2: Ajouté une erreur de vérification

ETA3: code commenté, compilé exécutable et une solution Visual Studio se trouve dans my SVN repository.

+0

Merci beaucoup! Je suppose que je construis cela dans une "Win32 Console App" ?? –

+0

@Jeremy: Oui. Je ne pouvais pas comprendre comment le construire à partir de la ligne de commande, mais comme une application de console à partir de Visual Studio, il a bien fonctionné. – Joey

+0

Merci! Juste une chose de plus, j'essaye d'invoquer ce derrière les coulisses d'une autre application, donc y a-t-il un moyen de cacher la fenêtre de ligne de commande noire de montrer? –