Pixel aus einem 3d Spiel einlesen!

Invihum

Grünschnabel
Hallo zusammen

Ich möchte aus einem Computerspiel die Pixel einlesen bzw die Pixel Farbwerte auslesen. Hier ist der Quellcode:

Code:
#include <windows.h>
#include <stdio.h>

HWND g_hwnd;
HDC dc;


int main( int argc, int *argv[]) {

g_hwnd = FindWindow(NULL, "Fenstername");
ShowWindow(g_hwnd, SW_RESTORE);
SetForegroundWindow(g_hwnd);
SetFocus(g_hwnd);

printf("Fange an Pixel zu lesen : \n\n");

int x, y;
int r, g, b;

COLORREF pixel;
for(x = 0; x < 1024; x++) {
for(y = 0; y < 768; y++) {
pixel = GetPixel(dc, x, y);

r = GetRValue(pixel);
g = GetGValue(pixel);
b = GetBValue(pixel);

printf("" + r + g + b);
printf("\n");
sleep(1000);
}
}

return 0;
}

Das Problem ist, ich bekomme als Ausgabe totalen Quatsch also irgendwelche Sonderzeichen, Buchstaben oder Zahlen und immer das Selbe.
Ich dachte erstmal es wird der Fensterrand gelesen und hab dann den x und y Wert durch 100 ersetzt, dass hat aber auch nichts gebracht.

Soviel weiß ich, das GetRValue, GetGValue und GetBValue einen Byte Wert Liefert.

Was ich gerne möchte ist ein rgb Wert wie zb. 25500 das entspräche rot oder irgendwas anderes, womit man arbeiten kann, jedenfalls gibt printf() nur quatsch aus.

Ich hab schon flessig gegooglet aber nichts passendes gefunden.
 
Zuletzt bearbeitet:
Hallo,

zunächst erst mal must du den Devicecontext (HDC) belegen:
C++:
dc = GetWindowDC(g_hwnd); // Devicecontext holen ...

// ... Pixel lesen

ReleaseDC(g_hwnd, dc); // ... und wieder freigeben
Dass der printf-Befehl nur Quatsch liefert ist nicht verwunderlich; du hast ihn falsch angewendet. Du denke, du wolltest sowas in der Art haben:
C++:
printf("R=%d G=%d B=%d",r, g, b);
Gruß
MCoder
 
Zurück