Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как сохранить desktop?


pumba ©   (2002-12-11 12:34:00) 

Мне нужно сохранить все, что есть на мониторе(в виде изображения) и записать это в файл. Как это сделать?


pumba   (2002-12-11 14:53:00) [1]

THANKS!!!!


Skier   (2002-12-11 13:19:00) [2]

procedure SaveDesktop(const AFileName : String);
var
ABitmap : TBitmap;
ADC : HDC;
begin
if AFileName = EmptyStr then Exit;
ABitmap := TBitmap.Create;
try
ABitmap.Width := Screen.Width;
ABitmap.Height := Screen.Height;
ADC := GetDC(GetDesktopWindow);
BitBlt(ABitmap.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, ADC, 0, 0, SRCCOPY);
ReleaseDC(GetDesktopWindow, ADC);
ABitmap.SaveToFile(AFileName);
finally
ABitmap.Free;
end; //try
end;


Song   (2002-12-11 13:10:00) [3]

2Skier © (11.12.02 12:55)
А ReleaseDC() кто делать будет? или хрен с ним..? :)


Skier   (2002-12-11 12:55:00) [4]

procedure SaveDesktop(const AFileName : String);
var
ABitmap : TBitmap;
begin
if AFileName = EmptyStr then Exit;
ABitmap := TBitmap.Create;
try
ABitmap.Width := Screen.Width;
ABitmap.Height := Screen.Height;
BitBlt(ABitmap.Canvas.Handle, 0, 0, Screen.Width, Screen.Height, GetDC(GetDesktopWindow), 0, 0, SRCCOPY);
ABitmap.SaveToFile(AFileName);
finally
ABitmap.Free;
end; //try
end;


Карелин Артем   (2002-12-11 12:49:00) [5]

drin © (11.12.02 12:45) - а если это вызвать раз так 100-1000 утечки памяти и ресурсов не будет??


Song   (2002-12-11 12:48:00) [6]

GetDC(HWND_DeskTop) связываешь с TCanvas. Далее копируешь через BitBlt область в TCanvas и сохраняешь на диск. Тоже самое можно сделать через TCanvas.CopyRect(). Вариантов много.


drin   (2002-12-11 12:45:00) [7]


function GetScreenImage: TBitmap;
begin
Result:=TBitmap.create;
Result.Width := Screen.Width;
Result.Height := Screen.Height;
BitBlt(Result.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
GetDC(GetDesktopWindow), 0, 0, SRCCopy);

end;


Mad_Ghost   (2002-12-11 12:44:00) [8]

да, скажи плизз....


Keymaster   (2002-12-11 12:39:00) [9]

1) Нажимаем кнопку PrintScreen
2) Запускаем банальный MSPaint
3) Жмем меню "Edit -> Paste"
4) Что получилось - сохраняем в файл

если надо - могу сказать, как это
на Delphi сделать...


Наверх

Титульная страница Поиск, карта сайта Написать письмо