Как сделать ScreenShot вместе с изображением курсора?

Эта функция на Delphi возвращает растровое изображение экрана (ScreenShot), вместе с изображением курсора. В этой функции на Delphi используются другие функции из нашего Delphi FAQ: ScreenCopy и GetCursorInfoWithIcon.

//делает копию экрана с курсором
function ScreenCopyWithCursor: TBitmap;
var
  ABitmap: TBitmap;
  MyCursor: TIcon;
  CursorInfo: TCursorInfo;
  IconInfo: TIconInfo;
  pt: TPoint;
begin
  // получаем ScreenShot
  ABitmap := TBitmap.Create;
  ABitmap := ScreenCopy;
  // создаем иконку, в котрой будем хранить иконку курсора
  MyCursor := TIcon.Create;
  try
    // получаем данные о курсоре
    CursorInfo := GetCursorInfoWithIcon;
    if CursorInfo.hCursor <> 0 then
    begin
      GetCursorPos(pt);
      MyCursor.Handle := CursorInfo.hCursor;
      // получаем параметры иконки
      GetIconInfo(CursorInfo.hCursor, IconInfo);
      // рисуем иконку курсора в нужном месте на Скриншоте
      ABitmap.Canvas.Draw(pt.X - IconInfo.xHotspot,
                          pt.Y - IconInfo.yHotspot, MyCursor);
    end;
  finally
    // освобождаем память
    MyCursor.ReleaseHandle;
    MyCursor.Free;
  end;
  Result := ABitmap;
end;

Пример использования:
...
Image1.Picture.Assign(ScreenCopyWithCursor);
...

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *