Hi, after a big research I finally found a solution to make sreenshots;p But what is bothering me - when I do some tests it shows up that analizing about 66.000 pixels takes 50-60% of my CPU resources(Intel Core Duo 1.66 GHz). Is there a faster way to do that?
Here is the code:
Code://--------------------------------------------------------------------------- #include <vcl.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" #include <windows.h> #include <stdio.h> #include <winuser.h> #include "fstream.h" String dir; String czas; String data; int b=0; int s=0; TForm1 *Form1; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { b++; if(b>1000) return; TCanvas &PulpitCanvas = *new TCanvas(); Graphics::TBitmap *bitmap = new Graphics::TBitmap; COLORREF k[116][114]; HWND Wnd=FindWindow(NULL,"WINDOW"); if(Wnd==0) {MessageBox(0,"Didnt found the window!",0,0);} PulpitCanvas.Handle = GetDC(Wnd); bitmap->Width = 800; bitmap->Height = 600; bitmap->Canvas->CopyRect(Rect(0, 0, bitmap->Width, bitmap->Height), &PulpitCanvas, Rect(0, 0, bitmap->Width, bitmap->Height)); for(int i=0; i<116; i++) { for(int j=0; j<114; j++) { if(bitmap->Canvas->Pixels[i][j]==RGB(0,0,0)); if(bitmap->Canvas->Pixels[i][j]==RGB(0,0,0)); if(bitmap->Canvas->Pixels[i][j]==RGB(0,0,0)); if(bitmap->Canvas->Pixels[i][j]==RGB(0,0,0)); if(bitmap->Canvas->Pixels[i][j]==RGB(0,0,0)); } } ReleaseDC(0, PulpitCanvas.Handle); delete &PulpitCanvas; delete bitmap; } //---------------------------------------------------------------------------




Reply With Quote