首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我可以阻止用户在Mac应用程序中截图吗?

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

Stack Overflow用户
提问于 2010-11-22 03:03:51
回答 5查看 5.6K关注 0票数 9

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

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

--编辑如下--

我决定在图片上加水印。我一直试图避免水印,因为图像是立体的,但我对水印现在的样子相当满意。我把一个标志放在角落,并在每个图像上进行足够的偏移,这样它就会出现在前景中。

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

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-11-22 07:14:11

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

票数 3
EN

Stack Overflow用户

发布于 2018-01-30 20:38:16

基于通过DVD播放器进行的符号搜索,它很可能使用私有API CGSSetWindowCaptureExcludeShape。理查德·希尔德非常友好地对它和wrap it进行了反向工程,以便于使用。

由于是私有的,它可能会在任何时候停止工作(或者已经停止工作)。

但最终你的问题的答案是“是的,但不是以任何公开记录的方式”。来自this lengthy thread的其他一些收获包括:

  1. 问这个问题不可避免地激起了许多目光短浅的道德义愤。
  2. 鉴于没有公开的方法,逆向工程DVD机是一条有用的途径。
  3. 向苹果DTS提出请求可能是找到答案的唯一可靠方法。
票数 9
EN

Stack Overflow用户

发布于 2014-04-10 21:25:29

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

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

另一种选择是跟踪在屏幕截图location中创建的文件,查看它们是否与name的模式匹配,然后删除它们。

不过,这种方法仍然很不友好。

我还调查了是否有可能终止处理屏幕截图的进程,不幸的是,处理它的进程,SystemUIServer在被终止后只是重启。

如果DVD播放器当前正在播放DVD,SystemUIServer似乎拒绝截图。虽然我不知道DVD播放检测是如何工作的,但它可能是阻止屏幕截图的线索。

链接

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4239685

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档