unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) GroupBox1: TGroupBox; Button1: TButton; Image1: TImage; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin if timer1.Enabled=true then timer1.Enabled:=false else timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); var bmp:TBitmap; scrn, space:TImage; begin bmp:=Tbitmap.Create; bmp.Width:=150; bmp.Height:=64; BitBlt(bmp.Canvas.Handle, 0, 0, screen.width, screen.Height, GetDC(0), (screen.width div 2)-73, 225, SRCCOPY); image1.picture.Assign(bmp); bmp.SaveToFile('1.png'); scrn.LoadFromFile('1.png'); space.LoadFromFile('space.png'); CompareImages(scrn, space); end; procedure CompareImages(Image1, Image2: TImage); var x, y: integer; differences: LongInt; line1, line2: PByteArray; procent: single; const porog=5; begin differences:=0; for y:=0 to Image1.Picture.Bitmap.Height - 1 do begin line1:=Image1.Picture.Bitmap.ScanLine[y]; line2:=Image2.Picture.Bitmap.ScanLine[y]; for x:=0 to Image1.Picture.Bitmap.Width - 1 do if abs(line1[x] - line2[x]) > porog then inc(differences); if Image1.Picture.Bitmap.Height*Image1.Picture.Bitmap.Width>0 then procent:=100*(differences/(Image1.Picture.Bitmap.Height* Image1.Picture.Bitmap.Width)) else procent:=0; if procent>50 then begin showmessage('rabotaet'); Ttimer1.enable:=false; end; end; end; end.