Maximus Posted March 26, 2012 Report Share Posted March 26, 2012 Am codul : #include <windows.h>#include <stdio.h>#include <gdiplus.h>#include <time.h>#include <string.h>#include <stdio.h>#include <iostream>using namespace std;using namespace Gdiplus;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;} int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR lpCmdLine, int nShowCmd){ // for (int count = 26; count > -1; count -= 2) // { return GetScreeny(L"screeny.jpg", 75); // }}nu reusesc sa il fac sa faca screen la intervale de 10 min... nonstop pana dau kill la proces.Va rog frumos sa ma ajutati. Multumesc frumos. Quote Link to comment Share on other sites More sharing options...
cifratorul Posted March 26, 2012 Report Share Posted March 26, 2012 pai si cum ai incercat? ai pus si tu un timer ceva sa apelezi functia la un anumit interval? Quote Link to comment Share on other sites More sharing options...
Maximus Posted March 26, 2012 Author Report Share Posted March 26, 2012 (edited) @cifratorul ; am incercat asa :for (int count = 26; count > -1; count -= 2) { Sleep(19000); return GetScreeny(L"screeny.jpg", 75); }pe langa alte variante.. si nu a mers.ce e drept, nu sun PRO, iar codul nu e facut de mine, e luat de pe google@noVaLue ; sa inteleg ca nu am ce sa ai fac? Edited March 26, 2012 by Maximus Quote Link to comment Share on other sites More sharing options...
noVaLue Posted March 26, 2012 Report Share Posted March 26, 2012 Din moment ce un return se executa in functia main (WINAPI) programul se opreste, pentru ca el considera executarea completa a blocului de informatii, si intoarce un raspuns. Quote Link to comment Share on other sites More sharing options...
phreak Posted March 26, 2012 Report Share Posted March 26, 2012 spide iti sugerez cu caldura sa termini macar un tutorial de C sau C++ inainte sa te apuci de astfel de proiecte.Iti recomand Learn C++ Quote Link to comment Share on other sites More sharing options...
Maximus Posted March 26, 2012 Author Report Share Posted March 26, 2012 @phreak ; mersi. Vroiam doar sa il las in lege sa faca print din cand in cand ... oricum multumesc de ajutor. Quote Link to comment Share on other sites More sharing options...
noVaLue Posted March 26, 2012 Report Share Posted March 26, 2012 (edited) 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;} Edited March 26, 2012 by noVaLue 1 Quote Link to comment Share on other sites More sharing options...
phreak Posted March 26, 2012 Report Share Posted March 26, 2012 te-ai chinuit aiurea cu timeru ala cand puteai foarte frumos sa dai Sleep(1000 * 60 * 10) Quote Link to comment Share on other sites More sharing options...
noVaLue Posted March 26, 2012 Report Share Posted March 26, 2012 I-am dat o idee despre timer, cum ar putea sa il foloseasca, poate vrea sa faca ceva mai complex stiu ca nu ajuta la nimic in proiect, de aceea i-am facut o structura. Quote Link to comment Share on other sites More sharing options...