2010-02-03 132 views
4

我开始相信你无法使用Windows API。是否有可能捕获一个Windows 7 DWM缩略图窗口?

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

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

谢谢你一堆。

+0

有一个Windows 7 API SDK,你可以从微软下载..;) – t0mm13b 2010-02-03 23:42:01

+0

它和Win 7已经提供的库有什么不同? – 2010-02-03 23:46:00

回答

5

这不是DWM的工作原理:缩略图的内容决不会传递到窗口的DC上。相反,当桌面出现时,DWM组合引擎将直接在缩略图上呈现窗口内容。

不幸的是(官方)访问DWM缩略图的图像数据的方法很糟糕(但网络上有hack试图访问底层顶点数据并在DirectX 9中渲染)。

2

使用

DwmRegisterThumbnail 
DwmUnregisterThumbnail 
DwnUpdateThumbnailProperties 
1

你不能指望一个缩略图,在窗口的设备上下文的地方,因为缩略图不是在一个窗口的设备上下文放置。所以你的方法是行不通的。

但是,如果您试图窃取应用程序的缩略图,只需询问Dwm to give you it's thumbnail即可。这将允许您向用户展示您想要的确切缩略图。

另一方面,如果您想访问另一个进程的缩略图中的像素,则说明您有问题。

相关问题