Как приложения скрывают окна от захвата: сломанный API в macOS 15 и публичный флаг Windows
Когда вы делаете скриншот Netflix или демонстрируете экран в Zoom, вместо видео появляется чёрный прямоугольник. Это не магия и не защита кодека, а один документированный флаг в оконном API, который сообщает системе: «это окно не должно попадать в захваченные кадры». Механизм работает в менеджерах паролей, банковских клиентах и 2FA-токенах, скрывая конфиденциальный контент от скриншотов, записи OBS и даже системного Snipping Tool.
Флаг SetWindowDisplayAffinity появился в Windows 10 ещё в 2020 году и является публичным инструментом. На macOS долгое время существовал симметричный аналог, но в новой macOS 15 Sequoia Apple сломала его совместимость с фреймворком ScreenCaptureKit, создав запутанную ситуацию. На Linux реализация полностью зависит от дисплейного сервера, а в браузерах работает через цепочку платформенных API.
Эта механика стала критически важной для приложений, которым технически необходимо защищать окна от захвата, например, для сервисов онлайн-собеседований. Сломанный API в macOS 15 создаёт риск для разработчиков, вынуждая искать обходные пути для обеспечения приватности контента. Ситуация подчёркивает, насколько хрупкой может быть экосистема защиты от скриншотов, когда изменения в одной ОС ломают устоявшиеся практики.