8

我开始相信你对 Windows API 无能为力。

我有两个窗户。其中有一个 DWM 缩略图。我想要做的是,我希望能够将带有缩略图的窗口屏幕捕获到另一个窗口中。当我这样做时,使用 bitblt,除了缩略图之外的所有内容都被复制。它只是不在位图中。

那么 DWM 渲染是如何工作的呢?我的意思是,如果 DWM 将缩略图直接渲染到注册窗口的 DC 上,那么我的方法应该可行。我很困惑。

谢谢一堆。

4

2 回答 2

11

这不是 DWM 的工作方式:缩略图的内容永远不会被 blitted 到窗口的 DC 上。相反,当呈现桌面时,DWM 合成引擎将直接在窗口内容上呈现缩略图。

不幸的是,没有(官方)方法可以访问 DWM 缩略图的图像数据(然而,网络上有一个黑客试图访问底层顶点数据并在 DirectX 9 中呈现它)。

于 2010-06-01T01:40:12.030 回答
3

您不能期望缩略图被放置在窗口的设备上下文中,因为缩略图没有放置在窗口的设备上下文中。所以你的方法行不通。

但是,如果您想窃取应用程序的缩略图,只需让Dwm 给您它的 thumbnail 即可。这将允许您向用户呈现您想要的确切缩略图。

另一方面,如果您想访问另一个进程的缩略图中的像素,那么您就有问题了。

于 2011-01-18T18:18:02.187 回答