检测窗口是否使用硬件加速图形上下文

Tim*_*Tim 5 winapi activex gdi bitblt windows-10

我正在使用BitBltwinapi 函数截取给定窗口的屏幕截图,即使该窗口部分重叠。
我已经一切正常,除了在 Windows 10 上,对于某些窗口(如 Edge 浏览器),屏幕截图完全是黑色的。

许多其他问题都同意将此问题归因于在这些窗口上使用硬件加速图形上下文。

显然 GDI 库与那种图形上下文不兼容,因此必须使用不同的库。

我的问题特别是关于如何检测窗口是否使用与 GDI 库不兼容的图形上下文

如果我能够检测到这一点,那么我可以选择使用哪个库来正确捕获屏幕截图(GDI、ActiveX 或其他)。

否则,我可以检测到的唯一方法是逐像素扫描屏幕截图以检查它是否完全黑色。然后使用不同的捕获方法,直到我在屏幕截图上获得一些内容。
但这听起来像是一个糟糕的解决方案。

Cas*_*rix 1

我已经一切正常,除了在 Windows 10 上,对于某些窗口(如 Edge 浏览器),屏幕截图完全是黑色的。

您可以使用DwmRegisterThumbnail 捕获隐藏/重叠的窗口,特别是 UWP(如 Edge、Calc 等...)

我在 Windows 10 上使用它没有问题(+ D3D 保存位图)