Могу ли я запретить пользователю делать скриншоты в приложении Mac?

У меня есть приложение изображения, и я хочу выпустить его, где незарегистрированные пользователи могут просматривать файлы, но не могут сохранить, пока они не зарегистрировались.

Я ищу способ предотвратить использование пользователем встроенной функции скриншота, поэтому мне не нужно водяные знаки изображений. Как мне это сделать?

-- Редактирование Ниже...

Я решил поставить водяные знаки на изображениях. Я пытался избежать водяных знаков, так как изображения стереоскопические, но я довольно довольна тем, как водяной знак выглядит сейчас. Я помещаю логотип в угол и смещаю его достаточно на каждом изображении, чтобы он появился на переднем плане.

согласны ли люди с этим на практике или нет, мой вопрос по-прежнему остается в силе. DVD-плеер Apple скрывает видео на скриншотах, что не мешает пользователю делать скриншоты, но выполняет мою первоначальную цель.

Я все равно очень хотел бы знать, как это сделать. (путь DVD-плеер)

5 ответов


DVD-плеер делает это (пользователь все еще может сделать снимок экрана, но окно проигрывателя не отображается в нем), поэтому я уверен, что есть способ. Возможно, установка типа общего доступа окна в NSWindowSharingNone?


основываясь на поиске символов через DVD-плеер, он, вероятно, использует частный API CGSSetWindowCaptureExcludeShape. Ричард Херд был достаточно любезен, чтобы перепроектировать его и оберните его для удобства использования.

будучи частным, он может перестать работать (или уже перестал работать) в любое время.

но в конечном итоге ответ на ваш вопрос "да, но не в коем публично задокументированы сторону". Некоторые другие моменты эта длинная нить являются:

  1. задавая этот вопрос неизбежно вызывает много близорукого морального возмущения.
  2. учитывая, что нет публичного метода, DVD-плеер с обратной инженерией-полезный путь.
  3. запрос в Apple DTS может быть единственным надежным способом найти ответ.

можно попробовать запустить приложение в полноэкранном режиме и затем захватить все нажатия клавиш. Но, пожалуйста, послушай Сайда.


один вариант очень враждебный пользователь изменить папку, в которой хранятся снимки экрана, на /dev/null каталог стилей, изменив com.apple.screencapture настройка.

огромным недостатком этого является то, что вы можете испортить настройки пользователей и не сможете их восстановить, если выход из вашего приложения не чист.


другой вариант-отслеживать, какие файлы создаются в Screen capture location, посмотрите, соответствуют ли они шаблон для name а затем удалите их.

этот метод все еще довольно враждебен.


Я также исследовал, была ли возможность убить процесс, который обрабатывает захват экрана, к сожалению, процесс, который обрабатывает его,SystemUIServer просто перезагружается после смерти.


SystemUIServer кажется, отказывается делать скриншоты, если DVD-плеер в настоящее время играет DVD. Я понятия не имею, как работает обнаружение воспроизведения DVD, но это возможно, это приведет к предотвращению скриншотов.


ссылки


отказ от ответственности, прежде чем люди начнут разглагольствовать: у меня есть законная причина решить эту проблему, но не буду использовать com.apple.screencapture -> /dev/null метод из-за его недостатков.


нет, это функция системы.