从屏幕捕获中排除某些窗口

问题描述 投票:0回答:1

我正在尝试使用

BitBlt
捕获整个桌面,并且我还想从捕获中排除某些窗口(我自己的应用程序)。我可以为它们设置
WS_EX_LAYERED
属性,但它在启用桌面合成的 Window 7 中不起作用。显示和隐藏窗口不是一个选项,因为它会产生闪烁。

c++ winapi
1个回答
0
投票

我知道这是一个超级古老的线程,但这就是谷歌最初引导我的地方。

提问时它不可用,但从 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

© www.soinside.com 2019 - 2024. All rights reserved.