Могу ли я запретить пользователю делать скриншоты в приложении Mac?
У меня есть приложение изображения, и я хочу выпустить его, где незарегистрированные пользователи могут просматривать файлы, но не могут сохранить, пока они не зарегистрировались.
Я ищу способ предотвратить использование пользователем встроенной функции скриншота, поэтому мне не нужно водяные знаки изображений. Как мне это сделать?
-- Редактирование Ниже...
Я решил поставить водяные знаки на изображениях. Я пытался избежать водяных знаков, так как изображения стереоскопические, но я довольно довольна тем, как водяной знак выглядит сейчас. Я помещаю логотип в угол и смещаю его достаточно на каждом изображении, чтобы он появился на переднем плане.
согласны ли люди с этим на практике или нет, мой вопрос по-прежнему остается в силе. DVD-плеер Apple скрывает видео на скриншотах, что не мешает пользователю делать скриншоты, но выполняет мою первоначальную цель.
Я все равно очень хотел бы знать, как это сделать. (путь DVD-плеер)
5 ответов
DVD-плеер делает это (пользователь все еще может сделать снимок экрана, но окно проигрывателя не отображается в нем), поэтому я уверен, что есть способ. Возможно, установка типа общего доступа окна в NSWindowSharingNone
?
основываясь на поиске символов через DVD-плеер, он, вероятно, использует частный API CGSSetWindowCaptureExcludeShape
. Ричард Херд был достаточно любезен, чтобы перепроектировать его и оберните его для удобства использования.
будучи частным, он может перестать работать (или уже перестал работать) в любое время.
но в конечном итоге ответ на ваш вопрос "да, но не в коем публично задокументированы сторону". Некоторые другие моменты эта длинная нить являются:
- задавая этот вопрос неизбежно вызывает много близорукого морального возмущения.
- учитывая, что нет публичного метода, DVD-плеер с обратной инженерией-полезный путь.
- запрос в Apple DTS может быть единственным надежным способом найти ответ.
можно попробовать запустить приложение в полноэкранном режиме и затем захватить все нажатия клавиш. Но, пожалуйста, послушай Сайда.
один вариант очень враждебный пользователь изменить папку, в которой хранятся снимки экрана, на /dev/null
каталог стилей, изменив com.apple.screencapture
настройка.
огромным недостатком этого является то, что вы можете испортить настройки пользователей и не сможете их восстановить, если выход из вашего приложения не чист.
другой вариант-отслеживать, какие файлы создаются в Screen capture location
, посмотрите, соответствуют ли они шаблон для name
а затем удалите их.
этот метод все еще довольно враждебен.
Я также исследовал, была ли возможность убить процесс, который обрабатывает захват экрана, к сожалению, процесс, который обрабатывает его,SystemUIServer
просто перезагружается после смерти.
SystemUIServer
кажется, отказывается делать скриншоты, если DVD-плеер в настоящее время играет DVD. Я понятия не имею, как работает обнаружение воспроизведения DVD, но это возможно, это приведет к предотвращению скриншотов.
ссылки
- технические подробности о скриншотах в Mac OS X
- com.яблоко.подробности screencapture
- ScreenCapture.strings-список сообщений об ошибках из ScreenCapture
отказ от ответственности, прежде чем люди начнут разглагольствовать: у меня есть законная причина решить эту проблему, но не буду использовать com.apple.screencapture -> /dev/null
метод из-за его недостатков.