在 c# 中使用BitBlt捕获的屏幕截图在Windows 10上生成黑色图像。请帮我解决这个问题。
Chrome(硬件加速模式开启时)和 IE/Edge 窗口的屏幕截图是黑色图像。
仅在打开硬件加速模式时,Edge、Windows 10 中的 IE 浏览器窗口和 Chrome 浏览器窗口的输出图像为黑色。除了包括透明窗口在内的所有其他窗口,屏幕截图都很好。
这是代码:
const int Srccopy = 0x00CC0020;
var windowRect = new Rect();
GetWindowRect(handle, ref windowRect);
int width = windowRect.right - windowRect.left;
int height = windowRect.bottom - windowRect.top;
// get te hDC of the target window
IntPtr hdcSrc = GetWindowDC(handle);
// create a device context we can copy to
IntPtr hdcDest = CreateCompatibleDC(hdcSrc);
// create a bitmap we can copy it to,
IntPtr hBitmap = CreateCompatibleBitmap(hdcSrc, width, height);
// select the bitmap object
IntPtr hOld = SelectObject(hdcDest, hBitmap);
// bitblt over
BitBlt(hdcDest, 0, 0, width, height, hdcSrc, 0, 0, Srccopy);
// restore selection
SelectObject(hdcDest, hOld);
// clean up
DeleteDC(hdcDest);
ReleaseDC(handle, hdcSrc);
Image img = Image.FromHbitmap(hBitmap);
// free up the Bitmap object
DeleteObject(hBitmap);