如何防止打印屏幕

10 .net c# .net-2.0 winforms c#-2.0

我要求我正在处理的应用程序阻止用户轻松捕获屏幕内容.

我已经说过没有可行的方法可以完全防止这种情况发生,但我正在寻找方法来为这个过程引入一些障碍.

我正在使用C#/ .NET 2.0和WinForms

Fry*_*Guy 23

你不能.

您可以做的最好的事情是渲染到叠加层上的硬件加速设备,类似于视频播放器过去做的事情.基本上,您将整个窗口绘制为蓝色,并将图形渲染到视频卡上,并且内部视频卡将用图形替换蓝色.这样做的缺点是你必须放弃使用winforms控件,我不知道有什么方法可以轻松地使用.NET.我想如果您使用DirectShow.NET,他们的一个示例就是将您自己的图形放入流中.

即使在完成所有这些操作之后,仍然可以获得屏幕截图.只需用数码相机拍摄屏幕照片即可.

  • 数码相机+1。用户可以在阁楼的某个地方有一张旧的宝丽来照片。使用蚀刻草图捕获屏幕的用户可以获得奖励积分:-) (2认同)

z *_* - 9

这里:

答:Windows使用注册的热键实现打印屏幕.Windows使用预定义的热键IDHOT_SNAPDESKTOP和IDHOT_SNAPWINDOW来处理打印屏幕.这些对应于捕获整个屏幕的Print Screen和仅捕获活动窗口的Alt + Print Screen.要禁用这些功能,您只需注册热键,这会导致Windows在用户按任意热键时向您的应用发送WM_HOTKEY消息.您的实现可以忽略该消息以绕过默认的屏幕捕获行为.一个好的地方就是在你的大型机类中.

  • 我测试了slimKEYS,将PrintScreen映射到其他东西(打开记事本),它工作正常.这意味着使用PrintScreen vkey代码调用RegisterHotkey将为您工作.我还测试了Alt-PrintScreen.你必须注册两者,但它不会阻止其他应用程序捕获... (2认同)

And*_*kov 0

好吧,您可以尝试捕获按钮,但我不确定这效果如何。

一直让我烦恼的一件事是,每当我播放一部电影时,它永远不会截图。如果你可以通过单独的上下文进行渲染,那么拍摄它的照片就会变得非常烦人。也许您可以通过类似的方式发送屏幕输出?