![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как скопировать изоброжение чужого окна. [D6, NT4, Win2k, WinXP]
Pavia © (2004-12-28 23:18:00)Как скопировать изоброжение чужого окна? При условии что его перекрывпают другии окна, или вобще свернуто.
Pavia (2004-12-30 00:16:00) [1]VMcL
Так я пробовал. Это мне не подходит.
Shaman_Naydak, MBo
Спасибо, это должно помочь.
Thick (2004-12-29 22:47:00) [2]А ты не узадумывался что прорисовка окна происходит именно когда его нухно прорисовать????
Anton_K (2004-12-29 22:17:00) [3]Можно послать WM_PAINT, где в wParam DC нужного битмапа.
DeadMeat (2004-12-29 22:09:00) [4]
> [3] VMcL © (29.12.04 07:45)
Проверено... Не поможет. Нужно именно [1] или что-то в этом роде...
---
...Death Is Only The Begining...
VMcL (2004-12-29 07:45:00) [5]Как-то так, наверное:
function GetWindowShot(const Window: HWND): TBitmap;
var
DC: HDC;
R: TRect;
begin
Result := TBitmap.Create;
with Result do
try
PixelFormat := pf24bit;
Transparent := False;
DC := GetWindowDC(Window);
try
GetWindowRect(Window, R);
Width := R.Right - R.Left;
Height := R.Bottom - R.Top;
BitBlt(Canvas.Handle, 0, 0, Width, Height, DC, 0, 0, SRCCOPY);
finally
ReleaseDC(Window, DC);
end;
except
Free;
raise;
end;
end;
Замечание.Как видно из кода, за освобождение результирующего TBitmap'а отвечает вызывающая сторона.
MBo (2004-12-29 07:42:00) [6]статья о [1] есть на
www.fengyuan.com
Shaman_Naydak (2004-12-29 07:35:00) [7]нормальные чужие окна должны отрабатывать
WM_PRINT и WM_PRINTCLIENT