Vezi daca poti compila... #pragma comment(lib, "GdiPlus.lib") #include <windows.h> #include <iostream> #include <gdiplus.h> #include <time.h> using namespace std; using namespace Gdiplus; struct timer { long tStart, tTime, tStamp; bool tAlive; }; int GetEncoderClsid(WCHAR *format, CLSID *pClsid) { unsigned int num = 0, size = 0; GetImageEncodersSize(&num, &size); if(size == 0) return -1; ImageCodecInfo *pImageCodecInfo = (ImageCodecInfo *)(malloc(size)); if(pImageCodecInfo == NULL) return -1; GetImageEncoders(num, size, pImageCodecInfo); for(unsigned int j = 0; j < num; ++j){ if(wcscmp(pImageCodecInfo[j].MimeType, format) == 0){ *pClsid = pImageCodecInfo[j].Clsid; free(pImageCodecInfo); return j; } } free(pImageCodecInfo); return -1; } int GetScreeny(LPWSTR lpszFilename, ULONG uQuality) // by Napalm { ULONG_PTR gdiplusToken; GdiplusStartupInput gdiplusStartupInput; GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL); HDC hdcScreen = CreateDC("DISPLAY", NULL, NULL, NULL); HDC hdcCapture = CreateCompatibleDC(hdcScreen); int nWidth = GetDeviceCaps(hdcScreen, HORZRES), nHeight = GetDeviceCaps(hdcScreen, VERTRES), nBPP = GetDeviceCaps(hdcScreen, BITSPIXEL); LPBYTE lpCapture; BITMAPINFO bmiCapture = { { sizeof(BITMAPINFOHEADER), nWidth, -nHeight, 1, nBPP, BI_RGB, 0, 0, 0, 0, 0, } }; HBITMAP hbmCapture = CreateDIBSection(hdcScreen, &bmiCapture, DIB_PAL_COLORS, (LPVOID *)&lpCapture, NULL, 0); if(!hbmCapture){ DeleteDC(hdcCapture); DeleteDC(hdcScreen); GdiplusShutdown(gdiplusToken); return 1; } int nCapture = SaveDC(hdcCapture); SelectObject(hdcCapture, hbmCapture); BitBlt(hdcCapture, 0, 0, nWidth, nHeight, hdcScreen, 0, 0, SRCCOPY); RestoreDC(hdcCapture, nCapture); DeleteDC(hdcCapture); DeleteDC(hdcScreen); CLSID imageCLSID; Bitmap *pScreenShot = new Bitmap(hbmCapture, (HPALETTE)NULL); EncoderParameters encoderParams; encoderParams.Count = 1; encoderParams.Parameter[0].NumberOfValues = 1; encoderParams.Parameter[0].Guid = EncoderQuality; encoderParams.Parameter[0].Type = EncoderParameterValueTypeLong; encoderParams.Parameter[0].Value = &uQuality; GetEncoderClsid(L"image/jpeg", &imageCLSID); int result = (pScreenShot->Save(lpszFilename, &imageCLSID, &encoderParams) == Ok); delete pScreenShot; DeleteObject(hbmCapture); GdiplusShutdown(gdiplusToken); return result; } bool pathExists(char *g_Path) { return GetFileAttributes(g_Path) != INVALID_FILE_ATTRIBUTES; } int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd) { char pathTF[128], pathTB[48], pathTBC[64]; wchar_t chToWCh[128]; int nextImg = 0; timer CLK; ZeroMemory(&pathTBC, sizeof(pathTBC)); ZeroMemory(&pathTB, sizeof(pathTB)); ZeroMemory(&pathTF, sizeof(pathTF)); GetCurrentDirectory(sizeof(pathTB), pathTB); sprintf_s(pathTBC, sizeof(pathTBC), "%s/scr", pathTB); if(!pathExists((char*)pathTBC)) CreateDirectory((char*)pathTBC, NULL); CLK.tStart = clock(); CLK.tStamp = 0; CLK.tAlive = true; while(CLK.tAlive) { CLK.tTime = clock() - CLK.tStart; if(CLK.tTime > CLK.tStamp) { sprintf_s(pathTF, sizeof(pathTF), "%s/screeny%d.jpg", pathTBC, nextImg); while(pathExists((char*)pathTF)) { nextImg++; sprintf_s(pathTF, sizeof(pathTF), "%s/screeny%d.jpg", pathTBC, nextImg); } size_t newSize = strlen(pathTF) + 1; size_t noConvChars = 0; mbstowcs_s(&noConvChars, chToWCh, newSize, pathTF, _TRUNCATE); GetScreeny((LPWSTR)chToWCh, 75); CLK.tStamp += 10*60*1000; } Sleep(100); } return 0; }