Скриншот окна

Пытаюсь сделать скриншоты всех открытых окон, в том числе свернутых. В настоящее время я использую этот код: http://www.developerfusion.com/code/4630/capture-a-screen-shot/

Но это не работает для свернутых окон и областей, где есть эффект стекла, поскольку Vista, как и строка заголовка проводника, черная. Может кто-нибудь мне помочь?

Моя цель — создать что-то похожее на Flip 3D; было бы здорово, если бы кто-то также знал что-то о том, как создать предварительный просмотр в реальном времени.


person eWolf    schedule 26.11.2009    source источник
comment
Не понимаю здесь закрытого голосования, как это не связано с программированием?   -  person Benjol    schedule 26.11.2009
comment
Найдено отличное решение, позволяющее выполнять предварительный просмотр в реальном времени: msdn.microsoft. .com/en-us/library/aa969541%28VS.85%29.aspx   -  person eWolf    schedule 26.11.2009
comment
@Jon Seigel: Почему вы тратите время на редактирование моего прошлогоднего вопроса только для того, чтобы удалить приветствие? оо   -  person eWolf    schedule 21.03.2010


Ответы (2)


Для областей с эффектом стекла: я думаю, что это не работает, потому что эти области могут быть нарисованы каким-то странным методом DirectX вместо обычного GDI.

Для проблемы минимизированных окон: если окно свернуто, его DC не отображается (концептуально у него даже нет причины для существования); вы должны попытаться отправить таким окнам сообщение WM_PRINT, попросив их нарисовать себя на DC, который вы им предоставите. Проблема с этим подходом в том, что не все окна правильно обрабатывают WM_PRINT.

person Matteo Italia    schedule 26.11.2009
comment
WM_PRINT обычно не работает для свернутых окон, потому что в свернутом виде окно не имеет нормального размера. - person Ben Voigt; 31.12.2013

Я нашел API, который используется для предварительного просмотра панели задач:

Обзор миниатюр DWM

Довольно круто, он даже позволяет вам делать предварительный просмотр в реальном времени!

person eWolf    schedule 18.01.2011