Снимаем Скрин Окна Своей Проги

  • Автор темы Автор темы Lomanu4
  • Дата начала Дата начала

Lomanu4

Команда форума
Администратор
Ofline
Часто бывает нужно иметь скрин окна своей проги, например, чтобы куда-нибудь запостить.

Делать prntScr и править в паинте утомительно, поэтому я как-то раз набрал вот такой код:
Код:
procedure TForm1.Button2Click(Sender: TObject);
var
   GetScreenDC: HDC;
   GetScreenBMP: TBitmap;
begin
   GetScreenDC := GetwindowDC(form1.Handle); // получаем указатель на канву окна
   GetScreenBMP:= TBitmap.Create;            // создаем заготовку картинки
   GetScreenBMP.Width:=form1.Width;      
   GetScreenBMP.Height:=form1.Height;
   // переносим битовую маску на канву картинки
   bitblt(GetScreenBMP.Canvas.Handle, 0, 0, form1.Width, form1.Height,GetScreenDC, 0, 0, SRCCOPY);
   getscreenbmp.SaveToFile('C:\4324324234.bmp');  // сохраняем картинку в файл и освобождаем ресурсы.
   GetScreenBMP.Free;
end;
 
проверил работает добавил сохранение в jpeg - файлы меньше, генерация имени по дате чтоб последовательно лежали рядом с ехе
Код:
uses Jpeg;
//преобразование в jpeg
procedure BmpToJpeg(Source, Dest: String);
var
  jpgImg: TJPEGImage;
  bmp: TBitmap;
begin
  try
    bmp := TBitmap.Create;
    jpgImg := TJPEGImage.Create;
    bmp.LoadFromFile(Source);
    jpgImg.Assign(bmp);
    jpgImg.SaveToFile(Dest);
  finally
    DeleteFile(Source);
    bmp.Free;
    jpgImg.Free;
  end;
end;

// фоткаем
procedure TForm1.btnClick(Sender: TObject);
var
   GetScreenDC: HDC;
   GetScreenBMP: TBitmap;
   filename: string;
begin
   GetScreenDC := GetwindowDC(form1.Handle); // получаем указатель на канву окна
   GetScreenBMP:= TBitmap.Create;            // создаем заготовку картинки
   GetScreenBMP.Width:=form1.Width;
   GetScreenBMP.Height:=form1.Height;
   // переносим битовую маску на канву картинки
   bitblt(GetScreenBMP.Canvas.Handle, 0, 0, form1.Width, form1.Height,GetScreenDC, 0, 0, SRCCOPY);
   //filename := IntToStr(Random(999999));
   DateTimeToString(filename, 'yymmddhhnnss', Now);
   getscreenbmp.SaveToFile(filename+'.bmp');  // сохраняем картинку в файл и освобождаем ресурсы.
   BmpToJpeg(filename+'.bmp', filename+'.jpg');
   GetScreenBMP.Free;
end;
 
Последнее редактирование:
Назад
Сверху Снизу