6

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

4

2 回答 2

4

这家伙设法做到了你所追求的:http: //www.codeproject.com/Articles/20651/Capturing-Minimized-Window-A-Kid-s-Trick 我知道这个问题真的很老了,但它仍然可以对某人有效。

于 2013-07-20T22:57:14.640 回答
3

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

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

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

于 2009-10-04T22:25:11.307 回答