Jul
22
Как снять скриншот ?
08:57
Скрин (13.07.05 3:39)
Мне дали одну функцию, как это делать. Но она глючит. Часто вылетает какая то ошибка "неверный параметр". Не знаю, что это такое. Может у кого есть безглючный вариант ?
Просто Джо © (13.07.05 4:09) [2]
Вот, держив "самопал" из одного проекта.
При необходимости, накладывает даже изображение курсора.
Пример использования:
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1121211557&n=0
Мне дали одну функцию, как это делать. Но она глючит. Часто вылетает какая то ошибка "неверный параметр". Не знаю, что это такое. Может у кого есть безглючный вариант ?
Просто Джо © (13.07.05 4:09) [2]
Вот, держив "самопал" из одного проекта.
При необходимости, накладывает даже изображение курсора.
unit ScrUtil;
interface
uses Windows, SysUtils, Graphics;
procedure MakeScreenshot (Bmp: TBitmap; CaptureCursor: Boolean = True);
implementation
uses Controls, Forms;
procedure MakeScreenshot (Bmp: TBitmap; CaptureCursor: Boolean = True);
var
DC: HDC;
ACursor: HICON;
Pt: TPoint;
CurInfo: tagCURSORINFO;
IcoInfo: _ICONINFO;
begin
Bmp.Width := Screen.Width;
Bmp.Height := Screen.Height;
DC := GetDC (GetDesktopWindow);
try
BitBlt (
Bmp.Canvas.Handle,
0,0,Bmp.Width,Bmp.Height,
DC,
0,0,
SRCCOPY);
// -- курсор
if CaptureCursor then
begin
CurInfo.cbSize := SizeOf(CurInfo);
GetCursorInfo(CurInfo);
ACursor := CurInfo.hCursor;
Pt := CurInfo.ptScreenPos;
GetIconInfo (ACursor,IcoInfo);
DrawIcon(
Bmp.Canvas.Handle,
Pt.X-IcoInfo.xHotspot,
Pt.Y-IcoInfo.yHotspot,
ACursor
)
end;
finally
ReleaseDC (GetDesktopWindow,DC);
end;
end;
end.
Пример использования:
procedure TScrnShtFrm.Button5Click(Sender: TObject);
var
Bmp: TBitmap;
begin
Bmp := TBitmap.Create;
try
// снимаем изображение экрана с курсором
MakeScreenshot(Bmp,True);
// и сохраняем его в файл директории программы
Bmp.SaveToFile(ExtractFilePath(ParamStr(0))+'screen.bmp');
finally
Bmp.Free;
end;
end;
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1121211557&n=0