Как сделать копию экрана (ScreenShot)?

Delphi FAQ >> Графика

Эта функция на Дельфи возвращает растровое изображение экрана (ScreenShot):

//делает копию экрана
function ScreenCopy: TBitmap;
var
  DC: HDC;
  ABitmap: TBitmap;
begin
  // дескриптор дисплейного контекста устройства для Рабочего стола
  DC := GetDC(GetDesktopWindow);
  //создаем объект класса TBitmap
  ABitmap := TBitmap.Create;
  // устанавливаем ширину и высоту картинки равной ширине экрана
  ABitmap.Width  := GetDeviceCaps(DC, HORZRES);
  ABitmap.Height := GetDeviceCaps(DC, VERTRES);
  // копируем в картинку изображение экрана
  BitBlt(ABitmap.Canvas.Handle, 0, 0, ABitmap.Width, ABitmap.Height, DC, 0, 0, SRCCOPY);
  Result := ABitmap;
end;

Пример использования:

Image1.Picture.Assign(ScreenCopy);


Когда переезжал в новую квартиру, коробка, в которой были Sony PSP и Ipod Touch упала на асфальт. Для приставки пришлось искать ремонт psp в Москве, а для ипода, к счастью, все обошлось без последствий.