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

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

Снимок экрана с курсором мыши [D6, XP]


swip ©   (2007-01-11 08:52:00) 

Как это сделать? И вот еще, почему снимок не берет шоты с видео проигрывателей? Они что, как то напрямую изображение передают.. забыл где то читал как это называется... Как с этим справиться?


Zeqfreed   (2007-01-11 11:17:00) [1]

Кажется, Eraser говорил, что у него в программе захватывается изображение с оверлеев? Было бы интересно узнать хотя бы методику сего действа, на большее рассчитывать вряд ли придется :)


Barloggg   (2007-01-11 10:57:00) [2]

вот вам статья с этого сайта:
Вывод графики на рабочий стол Windows с использованием оверлеев DirectX
http://www.delphimaster.ru/articles/directx/index.html


Barloggg   (2007-01-11 10:53:00) [3]

где-то я даже видел пример работы. в кладовке. здесь. рассматривался пример рисования на оверлее.


novill   (2007-01-11 10:37:00) [4]

А тут кто-то недавно хвастался что оверлеи захватить плёвое дело...

Можт объявится умелец.


Amoeba   (2007-01-11 10:36:00) [5]


> А как оверлеи захватить?

IMHO, никак.


09   (2007-01-11 10:33:00) [6]

Спасибо!


09   (2007-01-11 10:33:00) [7]

НО оверлеи, это тема отдельная.......


Джо   (2007-01-11 10:26:00) [8]

> [5] novill ©   (11.01.07 10:02)
> > [4] Джо ©   (11.01.07 09:41)
>
> А как оверлеи захватить?

Не имею ни малейшего представления.


novill   (2007-01-11 10:02:00) [9]

> [4] Джо ©   (11.01.07 09:41)

А как оверлеи захватить?


Джо   (2007-01-11 09:41:00) [10]

> Снимок экрана с курсором мыши
> Как это сделать?


function MakeScreenshot (Bmp: TBitmap; ActiveWindowOnly: Boolean; CaptureCursor: Boolean = True): Boolean;
var
 DC: HDC;
 ACursor: HICON;
 Pt: TPoint;
 CurInfo: tagCURSORINFO;
 IcoInfo: _ICONINFO;
 Wnd: THandle;
 ARect: TRect;
begin
 Result := False;
 if ActiveWindowOnly then
   Wnd := GetForegroundWindow
 else
   Wnd := GetDesktopWindow;
 if Wnd = 0 then Exit;
 GetWindowRect(Wnd, ARect);
 Bmp.Width := ARect.Right - ARect.Left;
 Bmp.Height := ARect.Bottom - ARect.Top;

 DC := GetWindowDC(Wnd);
 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 - Integer(IcoInfo.xHotspot),
       Pt.Y - Integer(IcoInfo.yHotspot),
       ACursor
     )
   end;
 finally
   ReleaseDC(Wnd, DC);
 end;
 Result := True;
end;

--
var
 Bmp: TBitmap;
...
 Bmp := TBitmap.Create;
 try
   MakeScreenshot (Bmp, False, True);
   Bmp.SaveToFile (...);
 finally
   Bmp.Free
 end;


Gydvin   (2007-01-11 09:39:00) [11]

отследить координаты мыши и отрисовать


Barloggg   (2007-01-11 09:28:00) [12]

винда много чего делает оверлеем. помошник офиса сделан оверлеем.
насчет курсора мыши не знаю он отрисовывается аппаратно (настраивается в свойсвах мыши или в свойствах видеодрайвера кажется).
кстати а всплывающие подсказки рисуются нормально.

вообще оверлей великая штука была в те времена когда весь мир был палитровым. для того собственно и делался.


Barloggg   (2007-01-11 09:26:00) [13]

это называется оверлей.
это внеэкранная поверхность.

Чтобы можно было делать скриншоты с видеопроигрывателей нужно зайти в свойства этих видеопроигрывателей и снять галочку с пункта навроде такого "использовать наложение".

и все заработает.


Наверх

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