是否可以捕获带有Windows 7 DWM缩略图的窗口?

时间:2010-02-03 23:18:11

标签: winapi windows-7 dwm

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

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

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

非常感谢。

3 个答案:

答案 0 :(得分:6)

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

遗憾的是,没有(官方)方式访问DWM缩略图的图像数据(网上有一个hack试图访问底层顶点数据并在DirectX 9中渲染它。) p>

答案 1 :(得分:2)

使用

DwmRegisterThumbnail
DwmUnregisterThumbnail 
DwnUpdateThumbnailProperties

答案 2 :(得分:1)

您不能指望缩略图放置在窗口的设备上下文中,因为缩略图在​​窗口的设备上下文中不是放置。所以你的方法不起作用。

但是,如果您试图窃取应用程序的缩略图,只需询问Dwm to give you it's thumbnail即可。这样您就可以向用户显示您想要的精确缩略图。

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