Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.01.28;
Скачать: CL | DM;

Вниз

Снимок экрана с курсором мыши   Найти похожие ветки 

 
swip   (2007-01-11 08:52) [0]

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


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

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

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

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


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

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

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


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

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


 
Джо ©   (2007-01-11 09:41) [4]

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


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;


 
novill ©   (2007-01-11 10:02) [5]

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

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


 
Джо ©   (2007-01-11 10:26) [6]

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

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


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

Спасибо!


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

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


 
Amoeba ©   (2007-01-11 10:36) [9]


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

IMHO, никак.


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

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

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


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

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


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

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


 
Zeqfreed ©   (2007-01-11 11:17) [13]

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



Страницы: 1 вся ветка

Текущий архив: 2007.01.28;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.036 c
15-1168018699
Loginov Dmitry
2007-01-05 20:38
2007.01.28
Поделки


15-1168037962
ANTPro
2007-01-06 01:59
2007.01.28
Спам на DM


2-1168523899
Derty_Edd
2007-01-11 16:58
2007.01.28
VCL - TnT (разницы нет)


11-1146354469
hans
2006-04-30 03:47
2007.01.28
KOLHTTP


15-1168025419
Галинка
2007-01-05 22:30
2007.01.28
Ищу ветку