![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Захват картинки с окна перекрытого другим [D4, D5, D6, D7, Win2k, WinXP]
aleksei_c © (2006-08-06 18:58:00)Привет, ALL!
Как получить картинку с окна чужого приложения (имеем Handle), когда это окно частично или полностью перекрыто другим. Славная функция bitblt честно отдает то, что я и так вижу - окно перекрытое фрагментами других окон, а очень хочется получить его "чистым".
Нежелательно делать SetForegroundWindow(Handle), так как идея не в этом.
Есть рабочие способы?
aleksei_c (2006-09-04 16:53:00) [1]
> Анонимщики © (08.08.06 18:19) [9]
> Еще раз:
> http://www.fengyuan.com/article/wmprint.html
> И расскажи о результате
к сожаленью тут теже проблемы - изображение с окошек аськи, оперы отрисовывается частично...
Анонимщики (2006-08-08 18:19:00) [2]Еще раз:
http://www.fengyuan.com/article/wmprint.html
И расскажи о результате
aleksei_c (2006-08-07 16:27:00) [3]а есть способ перехватить окно сразу после его стандарного сообщения WM_PAINT, тогда теоретически можно и содрать его HDC? хуки перехватят до, если я правильно понимаю их смысл, или не обязательно?
homm (2006-08-07 15:52:00) [4]> использую EnumChildWindows, как правило сдирается все, кроме
> полей ввода текста (в аське например), ошибка у меня или
> действительно - часть окон не желает рисовать на мою канву?
Большие проблемы с RichEdit. скорее всего для окон ввода в аське используется имеено он.
aleksei_c (2006-08-07 15:36:00) [5]
> рекурсивно посылать последовательно WM_ERASEBKGND и WM_PAINT
> от родителя к деткам, передавая в качестве WParam свой DC
> и настраивая для каждого окна смещение в этом DC с помошью
> SetWindowOrgEx.
>
> ЗЫ: Не расчитывай что все приложения с радостью отдадут
> тебе изображения своих окон на не дисплейнцю канву ;)
использую EnumChildWindows, как правило сдирается все, кроме полей ввода текста (в аське например), ошибка у меня или действительно - часть окон не желает рисовать на мою канву?
aleksei_c (2006-08-07 11:18:00) [6]WM_PRINT как-то не очень, далеко не все элементы видны, перепробывал различные комбинации параметров :\
Анонимщики (2006-08-07 10:43:00) [7]WM_PRINT
homm (2006-08-06 23:42:00) [8]Если нужен хороший пример реализации ПОДОБНОГО то посмотрите реализацию WndProcTransparent в модуле KOL.PAS
aleksei_c (2006-08-06 21:12:00) [9]Спасибо, подойдет.
Осталось разобраться с SetWindowOrgEx :)
homm (2006-08-06 19:28:00) [10]рекурсивно посылать последовательно WM_ERASEBKGND и WM_PAINT от родителя к деткам, передавая в качестве WParam свой DC и настраивая для каждого окна смещение в этом DC с помошью SetWindowOrgEx.
ЗЫ: Не расчитывай что все приложения с радостью отдадут тебе изображения своих окон на не дисплейнцю канву ;)