![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Снимок экрана с курсором мыши [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]это называется оверлей.
это внеэкранная поверхность.
Чтобы можно было делать скриншоты с видеопроигрывателей нужно зайти в свойства этих видеопроигрывателей и снять галочку с пункта навроде такого "использовать наложение".
и все заработает.