|
Копилка
|
|
|
|
|
|
|
|
|
Если вам понравился наш сайт или вы нашли полезную информацию, то у вас есть возможность отблагодарить администрацию.
|
|
|
|
|
|
|
|
|
|
|
|
|
| | |
|
Screenshot экрана
/* <Include> */ #include <windows.h> /* </Include> */
/* <Const> */ const char *AppName="Yeah"; /* </Const> */
/* <Function> */ void SaveScreen(HWND pScreen, char Path[]) { int Width = /*GetSystemMetrics(SM_CXSCREEN)*/1280; int Height = /*GetSystemMetrics(SM_CYSCREEN)*/1024;
HDC hdcScreen; HBITMAP hbmScreen; //---------------Bitmap Informationen BITMAPINFO infobmp; infobmp.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); infobmp.bmiHeader.biWidth = Width; infobmp.bmiHeader.biHeight = Height; infobmp.bmiHeader.biPlanes = 1; infobmp.bmiHeader.biBitCount = 24; infobmp.bmiHeader.biCompression = 0; infobmp.bmiHeader.biSizeImage = 0; infobmp.bmiHeader.biXPelsPerMeter = 0; infobmp.bmiHeader.biYPelsPerMeter = 0; infobmp.bmiHeader.biClrUsed = 0; infobmp.bmiHeader.biClrImportant = 0; int* bitmap = new int[Width*Height*3]; BITMAPFILEHEADER bfheader; bfheader.bfType = 19778; bfheader.bfSize = sizeof(BITMAPFILEHEADER) + Width*Height*3 + sizeof(BITMAPINFOHEADER); bfheader.bfReserved1 = 0; bfheader.bfReserved2 = 0; bfheader.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); //Bitmap ----------------------- Informationen hdcScreen = GetWindowDC(pScreen); hbmScreen = CreateCompatibleBitmap(hdcScreen, Width, Height); // temporärer DC HDC hdcTemp = CreateCompatibleDC(hdcScreen); // Bitmap reinselektieren HBITMAP hbmOld = (HBITMAP)SelectObject(hdcTemp, hbmScreen); // Inhalt von Desktop übertragen BitBlt(hdcTemp, 0, 0, Width, Height, hdcScreen, 0, 0, SRCCOPY); int iResult = GetDIBits(hdcTemp, hbmScreen, 0, Height, bitmap, &infobmp, DIB_RGB_COLORS); // aufräumen SelectObject(hdcTemp, hbmOld); DeleteObject(hbmScreen); DeleteDC(hdcTemp); HANDLE hfile = CreateFile(Path, GENERIC_WRITE, 0, 0, OPEN_ALWAYS, 0, 0); //Datei Schreiben DWORD word; WriteFile(hfile, &bfheader, 14, &word, NULL); WriteFile(hfile, &infobmp, 40,& word, NULL); WriteFile(hfile, bitmap, Width*Height*3, &word,NULL); ReleaseDC(pScreen, hdcScreen); CloseHandle(hfile); delete[] bitmap; } /* </Function> */
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { HWND hWnd = FindWindow(NULL, AppName);
char *path="Z:/neu.bmp"; Sleep(1000); SaveScreen(hWnd, path);
return 0; }
Источник: http://board.gulli.com/thread/1344938-c---screenshot/ |
Категория: C++ | Добавил: Judge (30-05-2009)
|
Просмотров: 1971
| Рейтинг: 0.0 |
|
| |
| | |
|
|