有没有什么工具可以给任意窗口设置SetWindowDisplayAffinity避免被OBS采集

最近看到OBS28新出的在屏幕采集中隐藏OBS窗口这个功能好赞,于是我就想,能不能给TG/QQ都添加上这个东西,我就查了一手接口和源码,应该是这一个接口

所以现在的问题是:
1、有现成的吗?

最首要的问题在于是否允许其他应用去修改不属于它的窗口的这个设置…

我不懂这些,但看描述感觉只能修改自己的窗口
A handle to the top-level window. The window must belong to the current process.

那就大概必须得走注入dll这种路子了,意味着对于部分程序是不可用的。。。

如果只是要采集单个窗口/进程,而不是要采集整个屏幕,那是不是用obs自带的窗口采集就可以了……


像这样的话,其他软件都不会被采集进去。

对,但是有时候又得开屏幕捕获来,例如我直播摸网页代码什么的,浏览器和vscode反复切换,这时候不适合用窗口采集吧。

给想要屏蔽的软件加个透明的窗口?

然后给这个窗口设置不允许录屏?

没测试过. 只是提供了一个理论架设.

那……只能麻烦一点了,同时采集两个窗口,然后手动到OBS里面调整是否显示了,但显然不大现实。

1 Like

还真有这么个工具

2 Likes

我回去测试了一下,虽然对于QQ没有效果,但是能把TG和WeChat给隐藏就很心满意足了。
界面上虽然有点老,对于其他人可能emmmm,不过我没所谓啦,又不是没见过黑框框。

然后如果作死对explore设置隐藏的话也行,就是取消后会多几个奇怪的点不到的窗口。

好像这个更棒
image

测试结果:
可以直接勾选隐藏比上面的基于进程隐藏更加自由,同样对于QQ无力,根据Github的其他仓库说明,表示是由于窗口属性带有AllowsTransparency=True导致的系统不支持,而这个选择上对于失败的情况也有明确的反馈(即勾选后立刻清除勾选)

同时对于微信/TG将窗口隐藏到托盘再次打开这种情况也是无力。。。(上面那个也是

(或许我应该找个软件把QQ的allowstransparency先干掉,反正我设置完全透明度最近在我这里也表现成不透明。

1 Like

其实它附带了一个ahk脚本,可以用快捷键隐藏当前窗口,这样就无所谓界面不界面了

确实,不过我没有用ahk的习惯啦

其实这东西对对使用采集卡的用户才说更是刚需?

采集卡应该是无视这个设置吧,毕竟采集卡对于被采集的电脑是一个显示器。

很不错的一个工具。录屏直播时需要查看讲稿,有了这个工具,就能将窗口隐藏,明目张胆的去看讲稿了。