我可以阻止用户在Mac应用程序中截取屏幕截图吗?

ren*_*nat 6 macos cocoa

我有一个图像应用程序,我想释放它,未注册的用户可以查看文件,但不能保存,直到他们注册.

我正在寻找一种方法来阻止用户使用内置的屏幕截图功能,因此我不必为图像添加水印.我怎么能做到这一点?

- 编辑下方 -

我决定给图像加水印.我一直试图避免水印,因为图像是立体的,但我现在对水印的外观感到非常高兴.我在角落放了一个徽标,并在每个图像上对其进行了足够的偏移,使其显示在前景中.

无论人们是否在实践中同意,我的问题仍然有效.Apple的DVD播放器在其截图中隐藏了视频,这并不能完全阻止用户截取屏幕截图,而是完成了我的原始目标.

我仍然非常想知道如何做到这一点.(DVD播放器的方式)

Hea*_*ery 9

基于通过 DVD 播放器进行的符号搜索,它可能使用私有 API CGSSetWindowCaptureExcludeShape。理查德·赫德 (Richard Heard) 对它进行了逆向工程并将其包装起来以便于使用。

作为私有,它可能随时停止工作(或已经停止工作)。

但最终你的问题的答案是“是的,但不是以任何公开记录的方式”。这个冗长的线程的其他一些要点是:

  1. 提出这个问题不可避免地会激起许多近视的道德愤怒。
  2. 鉴于没有公开的方法,逆向工程 DVD 播放器是一个有用的途径。
  3. 向 Apple DTS 发出请求可能是找到答案的唯一可靠方法。


Pet*_*sey 3

DVD 播放器可以做到这一点(用户仍然可以截取屏幕截图,但播放器窗口不会出现在其中),所以我确信有办法。也许将窗口的共享类型设置为NSWindowSharingNone

  • 该视频可能是作为叠加层实现的。实际上,它并不真正存在于活动显示缓冲区中,而是在通往电缆的路上合并在一起。 (4认同)
  • @ArtOfWarfare 请不要浪费您的时间或用户的耐心来实现负面功能,这些功能很容易被击败,只会鼓励分发更用户友好的盗版程序版本。 (3认同)
  • 不要这样做。这不是一个技术问题,而是一个可用性问题。如果解决您提议的限制的好处像您声称的那样微不足道,那么尝试实施所述限制所带来的麻烦和可用性损失就不值得了。 (3认同)
  • @ChrisStratton - 在屏幕上有水印直到我的用户付款或只是阻止他们截取屏幕截图之间,我很确定他们宁愿我没有永久存在水印。我不打算将接下来几个月的空闲时间投入到我的用户永远不会付费的应用程序上 - 我还有价值 4 万美元的学生账单需要偿还(而且我还在上学)。您知道 DVD 播放器的功能吗,可以告诉我们吗? (2认同)