Q
捕捉隱藏或最小化
6
A
回答
5
的PrintWindow API工作得很好,我用它捕捉縮略圖隱藏窗口。儘管名稱與WM_PRINT和WM_PRINTCLIENT不同,但它幾乎適用於除Direct X/WPF窗口之外的所有窗口。
我添加了一些代碼(C#),但在回顧了代碼的使用方式之後,我意識到當我捕獲它的位圖時,窗口實際上並沒有隱藏,因此它可能不適用於您的情況。你能否將窗口顯示出屏幕,進行打印,然後再將其隱藏起來?
public static Bitmap PrintWindow(IntPtr hwnd)
{
RECT rc;
WinUserApi.GetWindowRect(hwnd, out rc);
Bitmap bmp = new Bitmap(rc.Width, rc.Height, PixelFormat.Format32bppArgb);
Graphics gfxBmp = Graphics.FromImage(bmp);
IntPtr hdcBitmap = gfxBmp.GetHdc();
bool succeeded = WinUserApi.PrintWindow(hwnd, hdcBitmap, 0);
gfxBmp.ReleaseHdc(hdcBitmap);
if (!succeeded)
{
gfxBmp.FillRectangle(new SolidBrush(Color.Gray), new Rectangle(Point.Empty, bmp.Size));
}
IntPtr hRgn = WinGdiApi.CreateRectRgn(0, 0, 0, 0);
WinUserApi.GetWindowRgn(hwnd, hRgn);
Region region = Region.FromHrgn(hRgn);
if (!region.IsEmpty(gfxBmp))
{
gfxBmp.ExcludeClip(region);
gfxBmp.Clear(Color.Transparent);
}
gfxBmp.Dispose();
return bmp;
}
1
有WM_PRINT
和WM_PRINTCLIENT
消息,你可以發送到窗口,這導致其內容被渲染到您選擇的HDC
。
然而,這些都不是完美的:而標準的Win32控件正確處理這些,在應用程序的自定義控件可能不會。
0
我想獲取部分隱藏的控件的位圖。
我使用的代碼之前做的圖,但包括窗口重疊它。所以..也許你想試試這個。 WM_PRINTCLIENT應該(在我的理解中)重新繪製控件內部,即使它不是真正可見的。
const int WM_PRINT = 0x317, WM_PRINTCLIENT = 0x318, PRF_CLIENT = 4,
PRF_CHILDREN = 0x10, PRF_NON_CLIENT = 2,
COMBINED_PRINTFLAGS = PRF_CLIENT | PRF_CHILDREN | PRF_NON_CLIENT;
SendMessage(handle, WM_PRINTCLIENT, (int)hdc, COMBINED_PRINTFLAGS);
//GDIStuff.BitBlt(hdc, 0, 0, width, height, hdcControl, 0, 0, (int)GDIStuff.TernaryRasterOperations.SRCCOPY);
代碼之前,現在註釋掉。它基於這裏找到的代碼:Pocket PC: Draw control to bitmap(接受的答案)。這與蒂姆羅賓遜在本主題中提出的建議基本相同。
而且,這裏看看 http://www.tcx.be/blog/2004/paint-control-onto-graphics/
相關問題
- 1. 捕捉隱藏NSWindow
- 2. 捕捉最小化,最大化,調整大小,鍵盤焦點變化等
- 3. 全屏隱藏最小化按鈕Flex
- 4. 在javascript中隱藏或最小化窗口
- 5. 用python打開一個程序最小化或隱藏
- 6. 轉儲隱藏(或最小化)X11窗口
- 7. 在Winform啓動後隱藏或最小化PowerShell提示
- 8. Qt隱藏最小化,最大化和關閉按鈕
- 9. 從最小化的窗口捕捉圖像
- 10. 捕捉媒體鍵時,應用程序最小化
- 11. 如何捕捉照片,然後iOS應用程序最小化?
- 12. 捕捉值表大寫或小寫
- 13. 捕捉變化 - rtcltk
- 14. 如何隱藏主窗口的標題欄不隱藏最小化,在Qt的
- 15. @捕捉不捕捉
- 16. 捕捉ThreadAbortException時隱藏Throw的處理是什麼?
- 17. selenium ElementNotVisibleException無法捕捉到隱藏的元素
- 18. 如何捕捉和隱藏iframe js錯誤?
- 19. JS顯示/隱藏DIV Toggler捕捉到頁首
- 20. 如何捕捉/處理窗體的隱藏/顯示事件?
- 21. Android。如何捕捉鍵盤被隱藏的時刻?
- 22. 捕捉縮小事件
- 23. android:活動需要最小化或隱藏,如何保持活動
- 24. 隱藏最大化/最小化和關閉按鈕的Matlab圖形窗口
- 25. eclipse e4(Juno):無法隱藏視圖零件最小化/最大化按鈕
- 26. JavaScript:捕捉URI變化
- 27. 從Singelton捕捉變化
- 28. 繪製或隱藏控制框爲無邊界形式,同時最大化和最小化
- 29. 嘗試捕捉最後不捕捉異常
- 30. 如何隱藏MPart上的最小化按鈕?
有趣,我想,但我沒有得到結果。你可以發佈一些代碼或鏈接或其他? 感謝 – cbrulak 2009-05-07 21:13:40