Bonjour,
Je tente de tester la couleur de pixels sur quelques points de l'écran. Mais mon compte donne pas l'effet escompté : il se compile, il tourne, mais m'indique à chaque fois que la couleur demandé est 0,0,0 (R,G,B). Bien entendu, j'ai vérifié que ce n'était pas le cas et qu'il aurait du m'indiquer une couleur. Par contre, il m'indique bien la résolution d'affichage.
Les lib sont configurés dans le compilateur directement. J'ai bien indiqué celle pour getPixel(). Le sleep() me permet d'avoir le temps d'ouvrir l'application de mon choix pour faire le test : idéalement, je voudrais que cela fonctionne avec un jeu vidéo.
Je souhaite faire mon programme en C sous Windows. J'ai lu des articles qui se rapproche de ce que je souhaite faire, mais malgré cela, je n'ai pas trouvé la solution à mon problème, le code semble correct.
Voici le code :
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <time.h>
#include <conio.h>
#include <unistd.h>
#include <errno.h>
#include <strings.h>
#include <unistd.h>
#include <winsock.h>
int main(int argc, char * argv[])
{
int R,G,B;
Sleep(10000);
HWND hFore = GetForegroundWindow();
HDC ScreenSrc;
ScreenSrc = GetDC(NULL);
if (ScreenSrc == NULL)
{
printf("erreur\n");
}
else {
COLORREF Pix;
Pix = GetPixel(ScreenSrc, 100, 100);
R = GetRValue(Pix);//->valeur du rouge (0-255)
G = GetGValue(Pix);//->valeur du vert (0-255)
B = GetBValue(Pix);//->valeur du bleu (0-255)
printf("%i,%i,%i\n", R,G,B);
int ScreenX = GetDeviceCaps(ScreenSrc, HORZRES);
int ScreenY = GetDeviceCaps(ScreenSrc, VERTRES);
B = GetBValue(Pix);//->valeur du bleu (0-255)
printf("%i,%i\n", ScreenX, ScreenY);
}
system("pause");
return 0;
}
Je remercie d'avance ceux qui m'aideront dans la résolution de ce problème.