000
08.01.2008, 22:13 Uhr
mhauert
|
Hallo zusammen,
ich bin gerade dabei, ein Programm zu schreiben, mit dem ich Screenshots machen und diese dann in JPEGs schreiben kann.
Außerdem will ich die Screenshots später vergleichen und bearbeiten können. Ich nutze zum programmieren das MS VC++ 2008.
Eins vorweg, ich bin eigentlich Java Programmierer und hab mich gerade erst in C++ eingearbeitet...
Ich bin inzwischen soweit, das ich ein Bitmap bekomme:
C++: |
int nWidth = GetSystemMetrics(SM_CXSCREEN); int nHeight = GetSystemMetrics(SM_CYSCREEN);
HWND hWnd = ::GetDesktopWindow(); HDC hdc = ::GetDC(hWnd); HDC memDC = ::CreateCompatibleDC(hdc); HBITMAP hbm = ::CreateCompatibleBitmap(hdc, nWidth, nHeight); HBITMAP hbmOld = (HBITMAP)::SelectObject(memDC, hbm);
::BitBlt(memDC, 0, 0, nWidth, nHeight, hdc, 0, 0, SRCCOPY); BITMAPINFO bmi;
ZeroMemory(&bmi, sizeof(bmi));
bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmi.bmiHeader.biWidth = nWidth; bmi.bmiHeader.biHeight = nHeight; bmi.bmiHeader.biBitCount = 24; bmi.bmiHeader.biPlanes = 1; bmi.bmiHeader.biCompression = BI_RGB; bmi.bmiHeader.biSizeImage = bmi.bmiHeader.biBitCount * nWidth * nHeight / 8;
BYTE *bytesbuf = new BYTE[bmi.bmiHeader.biSizeImage];
::GetDIBits( memDC, hbm, 0, bmi.bmiHeader.biHeight, bytesbuf, &bmi, DIB_RGB_COLORS );
|
Wenn ich das Array bytesbuf dann mit nem Header zusammen inne Datei schreibe, kann ich die auch problemslos öffnen mit ner Bildbearbeitung.
Was ich aber gerne hätte, wäre das ganze halt als JPEG, aber nicht in einer Datei sondern halt nur als Array.
Kann mir da jemand helfen?
Vielen Dank im Vorraus. |