Delphi

Снимок экрана

Хочу сделать прогу, которая будет делать снимок с экрана каждые 0,5 сек, и сохранять каждый снимок в файл. Подскажите, как это можно организовать!
Есть такой вариант как делать что то типа:
Таймер на 0.5с
1.Эмуляция нажатия Prt Scr(уже есть в буфере)
2.Передача буфера в файл.
3.Созданение файла.
Есстественно это только теория как органзовать это , не понятно даже мне самому= ))
вот
Код:
var Desktopcanvas :TCanvas ; BitMap :TBitMap;begin //n 001 DesktopCanvas:=TCanvas.Create; DesktopCanvas.Handle:=GetDC(Hwnd_Desktop); BitMap := TBitMap.Create; BitMap.Width := Screen.Width; BitMap.Height:=Screen.Height; Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect, DesktopCanvas, DesktopCanvas.ClipRect); bitmap.SaveToFile('c:windowsscreen.bmp'); //k 001 image1.Picture.LoadFromFile('c:windowsscreen.bmp');
А можно что б сохранялось в JPEG, а то bmp'шники каждый по 3 Мб...
Может оно и не успеет каждые 0,5 сек записать такой файлик.
класс TJPEGImage в модуле JPEG с ним поковыряйся, насколько я помню вместо TBitmap использовать надо
Спасибо, но хорошо бы еще что б во время снимка указатель крысы был бы виден и можно было бы ее остановить в любой момент.
что такое крыса?
Сообщение от rpy3uH
что такое крыса?
"крысой" называют указатель мыши (курсор проще говоря )
наскоко я знаю курсор динамически перерисовівается, поэтому его тяжело зафиксировать, попробуй "дорисовывать" его в ручном режиме:
1: узнаем положение курсора
var P:TPount;
begin
GetCursorPos(P);
end;
2: рисуем курсор
DrawIcon(Image1.Canvas.Handle, P.X,P.Y, HIcon);
Не дорисовывает, может DrawIcon в другом месте дописать?
procedure TForm1.Timer1Timer(Sender: TObject);
var
Desktopcanvas :TCanvas ;
BitMap :Tbitmap;
nom:longint;
tagg:integer;
P:TPoint; hc:HICON;
begin
for tagg:=0 to 10 do
begin
nom:=nom+1;
GetCursorPos(p);
DesktopCanvas:=TCanvas.Create;
DesktopCanvas.Handle:=GetDC(Hwnd_Desktop);
BitMap := TBitMap.Create;
BitMap.Width := Screen.Width;
BitMap.Height:=Screen.Height;
Bitmap.Canvas.CopyRect(Bitmap.Canvas.ClipRect,
DesktopCanvas, DesktopCanvas.ClipRect);
DrawIcon(image1.Canvas.Handle,p.X,p.Y,Hc);
bitmap.SaveToFile('c:scr'+inttostr(tagg)+'.bmp') ;
image1.Picture.LoadFromFile('c:scr'+inttostr(tag g)+'.bmp');
end;
end;
можно сначала сохранить положение курсора, потом переметить его в нижний правый угол, сделать снимок, потом переметить на место
Сообщение от rpy3uH
можно сначала сохранить положение курсора, потом переметить его в нижний правый угол, сделать снимок, потом переметить на место
И что это даст?