【发布时间】:2015-04-16 10:17:03
【问题描述】:
这是我在 Windows 7 上运行良好的代码:
[DllImport("user32.dll")]
public static extern bool PrintWindow(IntPtr hwnd, IntPtr hdcBlt, uint nFlags);
[DllImport("user32.dll")]
public static extern IntPtr GetWindowDC(IntPtr hWnd);
public static Bitmap CaptureWindow(IntPtr hWnd) {
Rectangle rctForm = Rectangle.Empty;
using (Graphics grfx = Graphics.FromHdc(DLLImport.GetWindowDC(hWnd))) {
rctForm = Rectangle.Round(grfx.VisibleClipBounds);
}
Bitmap pImage = new Bitmap(rctForm.Width, rctForm.Height);
Graphics graphics = Graphics.FromImage(pImage);
IntPtr hDC = graphics.GetHdc();
try {
DLLImport.PrintWindow(hWnd, hDC, (uint)0);
} finally {
graphics.ReleaseHdc(hDC);
}
return pImage;
}
我遇到的问题是,在 Windows 8 上,它似乎生成了一个完全空白的位图(尽管尺寸是正确的)。有谁知道会发生什么?
【问题讨论】:
标签: c# windows winapi windows-8 user32