2010-02-03 133 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即可。這將允許您向用戶展示您想要的確切縮略圖。

另一方面,如果您想訪問另一個進程的縮略圖中的像素,則說明您有問題。

相關問題