Главная страница
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.035 c
2-1168094564
Beavercrazy
2007-01-06 17:42
2007.01.28
Hint для DBgrid


15-1168402510
Slider007
2007-01-10 07:15
2007.01.28
С днем рождения ! 10 января


2-1168193651
blackgrin
2007-01-07 21:14
2007.01.28
латинская буква Е с acute


3-1163013588
V-A-V
2006-11-08 22:19
2007.01.28
Преобразование данных


2-1168539990
Биритм
2007-01-11 21:26
2007.01.28
Перезагрузка компьютера