Annonceindlæg fra Kingston Technology
13. oktober 2008 - 19:46
#1
Der findes antageligt et par tusinde applikationer "derude", det letteste er nok at bruge en af dem. Men det er også rimeligt trivielt at lave et program selv, jeg har nok noget til at ligge, der kan bruges som en start.
13. oktober 2008 - 23:30
#2
Jeg fandt en stump kode der tager et screen dump og gemmer det i en fil. Så mangler du bare at lave det om til kun at tage et dump af den del du er interesseret i. #include <windows.h> #include <iostream> #include <fstream> BITMAPINFOHEADER WriteHeader(std::ostream &os, int aWidth, int aHeight, WORD aBitPixel) { BITMAPFILEHEADER BitmapFileHeader; BITMAPINFOHEADER BitmapInfoHeader; unsigned int WordsPerLine = (aWidth*aBitPixel + 31)/32; BitmapFileHeader.bfType = (('M' << 8) | 'B'); BitmapFileHeader.bfSize = sizeof(BitmapFileHeader) + sizeof(BitmapInfoHeader) + 4*WordsPerLine*aHeight; BitmapFileHeader.bfReserved1 = 0; BitmapFileHeader.bfReserved2 = 0; BitmapFileHeader.bfOffBits = 0x36 + 8; BitmapInfoHeader.biSize = sizeof(BITMAPINFOHEADER); BitmapInfoHeader.biWidth = aWidth; BitmapInfoHeader.biHeight = aHeight; BitmapInfoHeader.biPlanes = 1; BitmapInfoHeader.biBitCount = aBitPixel; BitmapInfoHeader.biCompression = BI_RGB; BitmapInfoHeader.biSizeImage = 0; BitmapInfoHeader.biXPelsPerMeter = 0; BitmapInfoHeader.biYPelsPerMeter = 0; BitmapInfoHeader.biClrUsed = 0; BitmapInfoHeader.biClrImportant = 0; os.write((char *)&BitmapFileHeader, sizeof(BitmapFileHeader)); os.write((char *)&BitmapInfoHeader, sizeof(BitmapInfoHeader)); return BitmapInfoHeader; } int main() { HDC dc = GetDC(0); int Width = GetDeviceCaps(dc, HORZRES); int Height = GetDeviceCaps(dc, VERTRES); HDC MemDc = CreateCompatibleDC(dc); HBITMAP BitMap = CreateCompatibleBitmap(dc, Width, Height); SelectObject(MemDc, BitMap); BitBlt(MemDc, 0, 0, Width, Height, dc, 0, 0, SRCCOPY); std::ofstream File("screen.bmp", std::ios::binary); BITMAP Bm; GetObject(BitMap, sizeof(Bm), &Bm); BITMAPINFOHEADER Header = WriteHeader(File, Width, Height, Bm.bmBitsPixel); char *Buffer = new char [Width*Height*Bm.bmBitsPixel/8]; GetDIBits(MemDc, BitMap, 0, Height, Buffer, (BITMAPINFO *)&Header, DIB_RGB_COLORS); File.write(Buffer, Height*Width*Bm.bmBitsPixel/8); ReleaseDC(0, dc); ReleaseDC(0, MemDc); delete [] Buffer; DeleteObject(BitMap); }
23. december 2008 - 09:58
#5
hmm den skriver en fejl i denne linie std::ofstream File("screen.bmp", std::ios::binary); ------------- er det ikke ren c# 2 fejl. Error 1 Expected ; or = (cannot specify constructor arguments in declaration) og nr. 2 ¨Error 2 Syntax error, '.' expected