避免 printscreen 函数渲染文本

Posted

技术标签:

【中文标题】避免 printscreen 函数渲染文本【英文标题】:avoid printscreen function rendering texts 【发布时间】:2009-06-02 03:54:31 【问题描述】:

我正在寻找一种方法来避免用户从一个桌面应用程序中截取屏幕截图。是的,这似乎很奇怪,但我们需要它。我尝试使用 OpenGL (SDL_tff) 来呈现文本,但似乎并没有阻止用户截取屏幕截图。请问,有没有人有一些聪明的想法如何做到这一点?

【问题讨论】:

不要沮丧,但如果他们能在显示器上看到它,他们可以截屏。 这是为了防止屏幕上的敏感/机密文本意外在屏幕截图中传输,还是其他不同的原因?知道你的目标会让回答更容易。 【参考方案1】:

将其渲染为视频并使用硬件覆盖。这些更难捕捉,因为它们在技术上从未像其他应用程序那样呈现到屏幕上。它直接进入硬件并通过显卡显示,绕过正常的屏幕截图域。

它仍然是可以抓取的。

就个人而言,我会拍一张高分辨率照片并通过 img2txt 转换器运行它:D

编辑:查看http://www.gamedev.net/community/forums/topic.asp?topic_id=359319,他们似乎有一个例子,它特别说明了效果的“截图”是多么愚蠢。

【讨论】:

这就是我要找的,一个如何在硬件覆盖中渲染的例子。谢谢 它应该可以在 vista 上运行......它完全是一个显卡的东西。见en.wikipedia.org/wiki/Hardware_overlay#Screenshots Vista 不使用叠加层,而是将视频流式传输到纹理。【参考方案2】:

正如我在评论中提到的,您无法阻止用户截屏。

不过,您可能可以做一些事情来让它变得更困难一些,并且可能会阻止知识渊博或缺乏动力的人截屏。

一个建议:您可能需要注意经常用于截屏的组合键,然后暂时隐藏您的文字。它可能得到您正在寻找的行为:允许用户截取屏幕截图而不显示文本。

另一种选择是提供一种非常简单明了的方法,让应用程序为用户截取屏幕截图,而无需保存文本。如果您不想让文本“无法”捕获,而是用户希望屏幕截图没有文本,这可能会很有用。

从您的问题中不清楚您提出请求的动机是什么。如果你只是想要“更漂亮”的没有文字的截图,这应该不是一个很难解决的问题:就像我之前提到的那样,提供一个保存“干净”截图的内置机制。

请记住,如果用户确实想要保存该文本,您不能阻止他们这样做。

【讨论】:

【参考方案3】:

你无法完成你想要的。事实上,你想要的是荒谬的。

【讨论】:

【参考方案4】:

即使您找到一些巧妙的方法来阻止他们使用计算机进行操作, 使用优质数码相机拍摄其显示器的照片可提供 质量非常好的截图。

【讨论】:

如果用户使用数码相机截屏没有问题,问题是允许他使用普通的截屏功能。【参考方案5】:

不要忘记添加 VM detection routines,以便在发现自己在虚拟机下运行时禁用显示。这样他们就无法截取 VM 窗口的屏幕截图。

除非他们修改了一个开放的虚拟机来删除那种简单的信息,在这种情况下你将不得不使用stronger。

【讨论】:

以上是关于避免 printscreen 函数渲染文本的主要内容,如果未能解决你的问题,请参考以下文章

如何避免在反应功能组件中对“静态组件”进行不必要的重新渲染?

如何避免在每次渲染时触发useEffect?

“printscreen”按键怎样使用?

OpenGL ES之实例化渲染(Instancing)

Cocos2d-x 3D渲染技术

printscreen键为何无法使用