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);