unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, ExtCtrls, StdCtrls, jpeg; type TForm1 = class(TForm) Timer1: TTimer; Timer2: TTimer; ScrollBar1: TScrollBar; Label2: TLabel; Label1: TLabel; StatusBar1: TStatusBar; Label3: TLabel; Animate1: TAnimate; procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure Timer1Timer(Sender: TObject); procedure Timer2Timer(Sender: TObject); procedure ScrollBar1Change(Sender: TObject); private procedure WM_HotKeyHandler (var Message: TMessage); message WM_HOTKEY; { Private declarations } public { Public declarations } end; var Form1: TForm1; exi,shoo,sho,hid,hel,tim, timint:integer; timbool:boolean; implementation {$R *.dfm} //procedure for_tim; //begin //form1.timer2.interval:=inttostr(form1.edit1.text); //form1.timer2.enabled:=true; //end; procedure TForm1.WM_HotKeyHandler (var Message: TMessage); var idHotKey: integer; fuModifiers: word; uVirtKey: word; begin idHotkey:= Message.wParam; fuModifiers:= LOWORD(Message.lParam); uVirtKey:= HIWORD(Message.lParam); if (fuModifiers = MOD_alt) AND (uVirtKey = 88) then form1.Close ; if (fuModifiers = MOD_alt) AND (uVirtKey = 66) then timer1.Enabled :=true; if (fuModifiers = MOD_alt) AND (uVirtKey = 83) then form1.Show; if (fuModifiers = MOD_alt) AND (uVirtKey = 72) then form1.hide; if (fuModifiers = MOD_alt) AND (uVirtKey = vk_f1) then showmessage('Alt + X - close form'+#13+ 'Alt + B - make "shoot"'+#13+ 'Alt + H - hide form'+#13+ 'Alt + S - show form'+#13+ 'Alt + T - run/stop timer, which make "shoot" every N seconds'+#13+ 'Alt + F1 - call Help'+#13+#13+#13+ 'All *.jpg files will save at \picture catalog, which will be created at 1-st "screen shoot"'); if (fuModifiers = MOD_alt) AND (uVirtKey = 84) then begin timer2.Interval := scrollbar1.Position * 1000; timbool:=not(timbool); if timbool=true then begin timer2.Enabled := true; animate1.Play(0,0,0); end else begin timer2.Enabled := false; animate1.Stop ; end; end; inherited; end; procedure TForm1.FormCreate(Sender: TObject); begin exi:=GlobalAddAtom('exi'); registerhotkey(handle,exi,mod_alt,88); shoo:=GlobalAddAtom('shoo'); registerhotkey(handle,shoo,mod_alt,66); sho:=globaladdatom('sho'); registerhotkey(handle,sho,mod_alt,83); hid:=GlobalAddAtom('hid'); registerhotkey(handle,hid,mod_alt,72); hel:=GlobalAddAtom('hel'); registerhotkey(handle,hel,mod_alt,vk_f1); tim:=GlobalAddAtom('tim'); registerhotkey(handle,tim,mod_alt,84); timbool:=false; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin UnregisterHotKey(handle,exi); globaldeleteatom(exi); UnregisterHotKey(handle,shoo); globaldeleteatom(shoo); UnregisterHotKey(handle,sho); globaldeleteatom(sho); UnregisterHotKey(handle,hid); globaldeleteatom(hid); UnregisterHotKey(handle,hel); globaldeleteatom(hel); UnregisterHotKey(handle,tim); globaldeleteatom(tim); end; procedure TForm1.Timer1Timer(Sender: TObject); var bmp:Tbitmap; dc:HDC; fname:string; jp:TJPEGImage; begin bmp:=tbitmap.Create ; bmp.Height :=screen.Height ; bmp.Width := screen.Width ; dc:=getdc(0); bitblt(bmp.Canvas.Handle,0,0,screen.Width,screen.Height,dc, 0,0,srccopy); fname:=timetostr(Time); CreateDir('picture'); jp:=tjpegimage.Create ; jp.Assign(bmp); if length(fname)=8 then jp.savetofile('picture\'+'scr'+fname[length(fname)-7]+ fname[length(fname)-6]+'-'+fname[length(fname)-4]+ fname[length(fname)-3]+'-'+fname[length(fname)-1]+ fname[length(fname)]+'.jpg'); if length(fname)=7 then jp.savetofile('picture\'+'scr'+'0'+fname[length(fname)-6]+ '-'+fname[length(fname)-4]+fname[length(fname)-3]+ '-'+fname[length(fname)-1]+fname[length(fname)]+'.jpg'); releasedc(0,dc); bmp.Destroy ; jp.Destroy ; timer1.Enabled :=false; end; procedure TForm1.Timer2Timer(Sender: TObject); begin timer1.Enabled :=true; end; procedure TForm1.ScrollBar1Change(Sender: TObject); begin label2.Caption := inttostr(scrollbar1.Position )+' sec'; if (scrollbar1.Position >9) then begin form1.Width := 383; statusbar1.Panels[0].Width := 278; animate1.Left := form1.Width - 25; end; if (scrollbar1.Position > 99) then begin form1.Width := 391; statusbar1.Panels[0].Width := 286; animate1.Left := form1.Width - 25; end; if (scrollbar1.Position <9) then begin form1.Width := 377; statusbar1.Panels[0].Width := 272; animate1.Left := form1.Width - 25; end; end; end.