我要求我正在处理的应用程序阻止用户轻松捕获屏幕内容.
我已经说过没有可行的方法可以完全防止这种情况发生,但我正在寻找方法来为这个过程引入一些障碍.
我正在使用C#/ .NET 2.0和WinForms
你不能.
您可以做的最好的事情是渲染到叠加层上的硬件加速设备,类似于视频播放器过去做的事情.基本上,您将整个窗口绘制为蓝色,并将图形渲染到视频卡上,并且内部视频卡将用图形替换蓝色.这样做的缺点是你必须放弃使用winforms控件,我不知道有什么方法可以轻松地使用.NET.我想如果您使用DirectShow.NET,他们的一个示例就是将您自己的图形放入流中.
即使在完成所有这些操作之后,仍然可以获得屏幕截图.只需用数码相机拍摄屏幕照片即可.
从这里:
答:Windows使用注册的热键实现打印屏幕.Windows使用预定义的热键IDHOT_SNAPDESKTOP和IDHOT_SNAPWINDOW来处理打印屏幕.这些对应于捕获整个屏幕的Print Screen和仅捕获活动窗口的Alt + Print Screen.要禁用这些功能,您只需注册热键,这会导致Windows在用户按任意热键时向您的应用发送WM_HOTKEY消息.您的实现可以忽略该消息以绕过默认的屏幕捕获行为.一个好的地方就是在你的大型机类中.