如何防止单个窗口被打印屏幕捕获?

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

我注意到有几次在媒体播放器运行时打印屏幕时,内容被替换为灰色矩形。我不知道这是否是由于 DRM 或某些技术问题而故意造成的,但令我震惊的是,在某些情况下,能够故意阻止屏幕捕获可能是一个有用的功能。我不想解决问题,而是复制它!

每个 HWND 是否有一些特定的打印屏幕消息 - Windows 是否进行特殊的重绘或只是将缓冲区转储到剪贴板?

我想我更愿意专门关注 Win32,但只要它与 Windows 相关就可以了。

windows winapi
3个回答
3
投票

您可以使用此方法注册热键。 注册 PrtScr 密钥,您的应用程序将在 WndProc 中收到一条消息,WM_HOTKEY。 收到后,您可以对表单执行某些操作以清空显示,或执行其他操作。

即使您的表单最小化,该热键方法也应该起作用。


2
投票

您必须关闭“使用叠加”才能截取屏幕截图。

打开 Windows Media 播放器。 从菜单中选择“工具”->“选项...”。 单击“性能”选项卡。 单击“高级...”按钮。 取消选中“视频加速”组中的“使用叠加”复选框。 单击“确定”按钮。 点击“确定”按钮


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.