Как я могу напечатать свернутые на экране окна? - PullRequest
6 голосов
/ 05 октября 2009

Как распечатать свернутые на экране окна? Я считаю, что это возможно, поскольку панель задач Windows может создавать предварительный просмотр окна, даже если оно свернуто.

Ответы [ 2 ]

4 голосов
/ 21 июля 2013

Этому парню удалось сделать именно то, что вы после: http://www.codeproject.com/Articles/20651/Capturing-Minimized-Window-A-Kid-s-Trick Я знаю, что этот вопрос действительно старый, но он все еще может быть действительным для кого-то.

3 голосов
/ 05 октября 2009

Я вполне уверен, что это невозможно, по крайней мере, с помощью внешнего приложения, такого как ваше. Когда окно приложения свернуто, оно не может (и не получает) сообщения WM_PAINT, что означает, что невозможно попросить окно перерисовать себя, пока оно свернуто (или «сфотографировать его»). Это ограничение (или правило) Windows API.

Панель задач «обходит это», отображая кэшированное изображение (которое является последним снимком, сделанным DWM-окном до того, как оно было свернуто), и поэтому не фактически делает текущий снимок окно. Вы можете проверить это, запустив приложение, которое периодически обновляет себя, а затем свернуть его - вы увидите, что изображение предварительного просмотра не будет обновлено, пока оно не будет восстановлено.

Единственный способ обойти это - делать то, что делает панель задач - периодически делать снимки нужного вам окна, а когда оно свернуто, использовать вместо этого кэшированное изображение. Конечно, это означает, что ваше приложение должно было следовать за целевым окном через некоторое время (это, очевидно, не сработает, если вы впервые захотите сделать снимок окна, пока оно свернуто).

...