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

Cocoa 我可以阻止用户在Mac应用程序中截图吗?,cocoa,macos,Cocoa,Macos,我有一个图像应用程序,我想发布它,未注册的用户可以查看文件,但在注册之前无法保存 我正在寻找一种方法,以防止用户使用内置的屏幕截图功能,这样我就不必水印的图像。我如何才能做到这一点 --编辑如下-- 我决定给这些图像加水印。我一直试图避免水印,因为图像是立体的,但我很高兴水印现在看起来如何。我把一个标志放在角落里,并在每张图像上进行足够的偏移,使其出现在前景中 不管人们在实践中是否同意,我的问题仍然有效。苹果的DVD播放器将视频隐藏在截图中,这并不能完全阻止用户截图,而是实现了我最初的目标 我仍

我有一个图像应用程序,我想发布它,未注册的用户可以查看文件,但在注册之前无法保存

我正在寻找一种方法,以防止用户使用内置的屏幕截图功能,这样我就不必水印的图像。我如何才能做到这一点

--编辑如下--

我决定给这些图像加水印。我一直试图避免水印,因为图像是立体的,但我很高兴水印现在看起来如何。我把一个标志放在角落里,并在每张图像上进行足够的偏移,使其出现在前景中

不管人们在实践中是否同意,我的问题仍然有效。苹果的DVD播放器将视频隐藏在截图中,这并不能完全阻止用户截图,而是实现了我最初的目标


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

否;这是一项系统功能。

您可以尝试全屏运行应用程序,然后捕获所有击键。但是请听siride。

DVD播放机会这样做(用户仍然可以拍摄屏幕截图,但播放机窗口不会出现在屏幕截图中),所以我相信有办法。可能将窗口的共享类型设置为?

一个用户非常反感的选项是,通过更改
com.apple.screencapture
设置,将屏幕截图存储的文件夹更改为
/dev/null
样式目录

这样做的一个巨大缺点是,如果应用程序的出口不干净,您可能会弄乱用户设置,无法恢复它们


另一个选项是跟踪在屏幕截图
位置
中创建的文件,查看它们是否与
名称
的模式匹配,然后删除它们

尽管如此,这种方法仍然很有敌意


我还调查了是否有可能终止处理屏幕捕获的进程,不幸的是,处理屏幕捕获的进程,
SystemUIServer
在终止后刚刚重新启动


SystemUIServer
似乎拒绝在DVD播放机当前正在播放DVD时截图。虽然我不知道DVD播放检测是如何工作的,但它可能是防止截图的一条线索


链接


在人们开始咆哮之前的免责声明:我有一个合法的理由来解决这个问题,但由于它的缺点,我不会使用
com.apple.screenscapture->/dev/null
方法。

基于通过DVD播放机进行的符号搜索,它可能使用私有API
cgsetwindowcaptureExcludeShape
。理查德·赫德(Richard Heard)非常友好地对其进行了反向工程,以便于使用

由于是私有的,它可能随时停止工作(或已经停止工作)

但最终你的问题的答案是“是的,但不是以任何公开记录的方式”。其他的一些外卖包括:

  • 问这个问题不可避免地激起了许多短视的道德愤怒
  • 由于没有公开的方法,反向工程DVD播放器是一个有用的途径
  • 向Apple DTS发出请求可能是找到答案的唯一可靠方法

  • 你可以站在他们身后,当他们试图按下屏幕截图击键时抓住他们的手!DVD播放机使用硬件视频覆盖。不确定Mac OS X上的API是什么,但即使这样,卑鄙的用户也可以拿出相机拍照:-P您的水印可能是更好的解决方案,只需确保它不容易裁剪。视频可能是作为覆盖实现的。实际上,它并不存在于活动的显示缓冲区中,而是在连接到电缆的过程中被合并在一起。即使这个问题从未得到真正的回答,这个问题也没有得到解决。这是收到的答案中最好的一个。@ChrisStratton-在屏幕上有水印直到我的用户付费,或者干脆阻止他们截图,我很确定他们宁愿我没有永久的水印。我不打算在接下来的几个月里把我的空闲时间花在一个我的用户永远不会付钱的应用程序上——我有价值4万美元的学生账单要付(我还在上学。)如果你知道如何做DVD播放机的工作,您能告诉我们吗?@ArtOfWarfare请不要浪费您的时间或您的用户的耐心来实现负面功能,这些功能都是微不足道的失败,只会鼓励发布更方便用户的盗版程序。不要这样做。这不是技术问题,而是可用性问题。如果围绕您提议的限制进行工作的好处与您声称的一样微不足道,那么尝试实现上述限制所带来的麻烦和可用性损失就不值得了。我已经尝试过了。它不起作用。我设置了一个应用程序来捕获所有击键,它能够捕获除截图之外的所有击键。