如何打印屏幕最小化的窗口?

时间:2009-10-04 22:07:25

标签: c# printscreen

如何打印屏幕最小化窗口?我相信这是可能的,因为Windows任务栏可以创建窗口的预览,即使它被最小化。

2 个答案:

答案 0 :(得分:4)

这家伙设法完成你的目标:http://www.codeproject.com/Articles/20651/Capturing-Minimized-Window-A-Kid-s-Trick 我知道这个问题确实很旧,但它对某些人来说仍然有效。

答案 1 :(得分:3)

我非常有信心这是不可能的,至少是像你这样的外部应用程序。当应用程序窗口最小化时,窗口不能(也不会)接收WM_PAINT消息,这意味着在最小化时(或者“拍摄它的照片”)不可能要求窗口重绘自身。这是Windows API的限制(或规则)。

任务栏通过显示缓存的图像(这是DWM在最小化之前拍摄的最后一个快照)来“绕过这个”,因此实际拍摄当前照片的窗口。您可以通过运行定期更新自身的应用程序进行测试,然后将其最小化 - 您将看到预览图像在恢复之前不会更新。

解决这个问题的唯一方法是执行任务栏的操作 - 定期拍摄所需窗口的图片,并在最小化时使用缓存图像。当然,这意味着您的应用必须提前一段时间跟踪目标窗口(如果您第一次想要拍摄窗口的快照,那么这显然不会起作用)。