我有一个图像应用程序,我想发布它,未注册的用户可以查看文件但不能保存,直到他们注册。
我正在寻找一种方法来阻止用户使用内置的屏幕截图功能,因此我不必为图像添加水印。我怎么能做到这一点?
- 编辑下方 -
我决定给图像加水印。我一直试图避免水印,因为图像是立体的,但我现在对水印的外观感到非常高兴。我在角落放了一个徽标,并在每个图像上对其进行了足够的偏移,使其显示在前景中。
人们是否在实践中同意,我的问题仍然有效。 Apple的DVD播放器在其截图中隐藏了视频,这并不能完全阻止用户截取屏幕截图,而是完成了我的原始目标。
我仍然非常想知道如何做到这一点。 (DVD播放器的方式)
答案 0 :(得分:3)
DVD播放器执行此操作(用户仍然可以截取屏幕截图,但播放器窗口中没有显示),所以我确定有办法。也许将窗口的共享类型设置为NSWindowSharingNone
?
答案 1 :(得分:3)
基于通过DVD播放器搜索符号,它可能使用私有API CGSSetWindowCaptureExcludeShape
。理查德·赫德(Richard Heard)非常友好地对其进行逆向工程,wrap it易于使用。
私有,可能随时停止工作(或已经停止工作)。
但最终你的问题的答案是"是的,但不是以任何公开记录的方式"。来自this lengthy thread的其他一些要点是:
答案 2 :(得分:2)
您可以尝试全屏运行应用程序,然后捕获所有按键。但是请听听siride。
答案 3 :(得分:2)
非常用户恶意的一个选项是通过更改/dev/null
设置将屏幕捕获所存储的文件夹更改为com.apple.screencapture
样式目录。
这方面的一个巨大缺点是,如果您的应用程序退出不干净,您可能会搞乱用户设置并且无法恢复它们。
另一个选项是跟踪屏幕截图location
中创建的文件,看它们是否与name
的模式匹配,然后将其删除。
这种方法仍然非常敌对。
我还调查了是否有可能杀死处理屏幕捕获的进程,不幸的是处理它的进程,SystemUIServer
只是在被杀后重新启动。
SystemUIServer
似乎拒绝截取屏幕截图。我不知道DVD播放检测是如何工作的,但它可能会阻止屏幕截图。
人们开始咆哮之前的免责声明:我有合理的理由来解决这个问题,但由于它的缺点,我不会使用com.apple.screencapture -> /dev/null
方法。
答案 4 :(得分:-3)
没有;这是一个系统功能。