2009-10-04 38 views
6

如何打印屏幕最小化窗口?我相信這是可能的,因爲即使Windows最小化,Windows任務欄也可以創建窗口的預覽。如何打印屏幕最小化窗口?

+0

Vista桌面管理器設法做到這一點,所以我不明白爲什麼不。您需要的低級別是另一個問題... – Noldorin

回答

3

我很自信,這是不可能的,至少通過像你這樣的外部應用程序。當應用程序窗口最小化時,窗口不能(也不會)接收WM_PAINT消息,這意味着在窗口被最小化時(或者「拍攝它」的照片),窗口不可能重新繪製自己。這是Windows API的限制(或規則)。

任務欄「來解決這個」通過顯示緩存的圖片(這是最後一個快照的DWM採取了窗口的它最小化之前),所以它是實際上走的是窗口的當前畫面。您可以通過運行定期更新自身的應用程序進行測試,然後將其最小化 - 您將看到預覽圖像在更新之前不會更新。

解決此問題的唯一方法是執行任務欄的操作 - 定期拍攝所需窗口的圖片,並在最小化時使用緩存圖像。當然,這意味着您的應用程序必須提前一段時間跟蹤目標窗口(如果第一次在最小化時想要拍攝窗口快照,這顯然不起作用)。

+1

請參閱http://msdn.microsoft.com/en-us/library/aa969541%28VS.85%29.aspx以使用任務欄使用的DWM函數。 –

+1

不錯的發現,我不知道該API存在(雖然它只能在Vista或更新的版本上使用) – GRB

+0

如果Windows Aero被禁用,會發生什麼情況? –