我正在尝试使用
BitBlt
捕获整个桌面,并且我还想从捕获中排除某些窗口(我自己的应用程序)。我可以为它们设置 WS_EX_LAYERED
属性,但它在启用桌面合成的 Window 7 中不起作用。显示和隐藏窗口不是一个选项,因为它会产生闪烁。
我知道这是一个超级古老的线程,但这就是谷歌最初引导我的地方。
提问时它不可用,但从 Windows SDK 10.0.19041.0 开始,我们可以做到:
SetWindowDisplayAffinity(hwnd, WDA_EXCLUDEFROMCAPTURE);
在此之前(不知道从什么时候开始),也有 WDA_MONITOR 而不是 WDA_EXCLUDEFROMCAPTURE,而是绘制了一个黑框。
我发现它是因为 OBS 做到了: https://github.com/obsproject/obs-studio/blob/master/UI/window-basic-main.cpp