?
mein sourcecode zum pixelauslesen und in einen string schreiben ist folgender:
//includes - windows.h nicht vergessen..
//in diese struktur kommen die ganzen handler und daten von dem fenster, dessen
//name im programm in dem char-array windowname steht.
struct Parameter
{
RECT rect;
HWND g_hWnd;
HDC hDC;
HDC hDC2;
HBITMAP hBM;
HBITMAP hBMOld;
BITMAPINFO bmi;
BYTE *pbBits;
struct set *mSet;
};
//eine struktur die höhe, breite und alle pixel eines bildes enthält
struct set
{
int sWidth;
int sHeight;
RGBTRIPLE *sPx;
};
struct Parameter *param;
param = (struct Parameter malloc(sizeof(struct Parameter));
param->g_hWnd = FindWindow(NULL, windowname); //windowhandler
if (param->g_hWnd == NULL)
{
exit(EXIT_FAILURE);
}
GetWindowRect(param->g_hWnd,¶m->rect); //rect==koordinaten des fensters am bildschirm
param->mSet->sWidth = param->rect.right - param->rect.left;
param->mSet->sHeight = param->rect.bottom - param->rect.top;
param->hDC=GetDC(NULL);
param->hDC2 = CreateCompatibleDC(param->hDC);
param->hBM = CreateCompatibleBitmap(param->hDC, param->mSet->sWidth, param->mSet->sHeight);
param->hBMOld = (HBITMAP)SelectObject(param->hDC2, param->hBM);
BitBlt(param->hDC2, 0, 0, param->mSet->sWidth, param->mSet->sHeight, param->hDC, param->rect.left, param->rect.top, SRCCOPY);
ZeroMemory(¶m->bmi, sizeof(param->bmi));
param->bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
param->bmi.bmiHeader.biWidth = param->mSet->sWidth;
param->bmi.bmiHeader.biHeight = param->mSet->sHeight;
param->bmi.bmiHeader.biBitCount = 24;
param->bmi.bmiHeader.biPlanes = 1;
param->bmi.bmiHeader.biCompression = BI_RGB;
param->bmi.bmiHeader.biSizeImage = param->mSet->sWidth * param->mSet->sHeight * 3;
param->pbBits = malloc(sizeof(BYTE[param->bmi.bmiHeader.biSizeImage]));
GetDIBits( param->hDC2, param->hBM, 0, param->bmi.bmiHeader.biHeight, param->pbBits, ¶m->bmi, DIB_RGB_COLORS );
param->mSet->sPx = (RGBTRIPLE *)(param->pbBits);
//hoffe das hilft soweit...