Исключаем Windows-приложение из Захвата Экрана
Некоторые приложения отображают конфиденциальную информацию. Recall в Windows может регулярно делать снимки экрана и таким образом сохранять конфиденциальную информацию, что крайне нежелательно.
Вы можете исключить своё приложение из этой функции и захвата экрана в целом, используя SetWindowDisplayAffinity и флаг WDA_EXCLUDEFROMCAPTURE. Это функция API Windows, позволяющая установить привязку отображения окна, которая определяет, как окно взаимодействует с программным обеспечением захвата экрана.
1. Добавьте NuGet-пакет Microsoft.Windows.CsWin32
2. Добавьте в проект файл NativeMethods.txt со следующим содержимым:
SetWindowDisplayAffinity
3. Добавьте следующий код в проект:
unsafe
{
// для WPF:
// new WindowInteropHelper(
// Application.Current.MainWindow)
// .Handle
// для WinForms:
// this.Handle
var windowHandle = (HWND)Handle;
Windows.Win32.PInvoke.SetWindowDisplayAffinity(
windowHandle,
Windows.Win32.UI
.WindowsAndMessaging
.WINDOW_DISPLAY_AFFINITY
.WDA_EXCLUDEFROMCAPTURE
);
}
Чтобы проверить работу флага, можно использовать Snipping Tool или любую другую программу для захвата экрана. Если флаг установлен правильно, окно приложения не должно быть захвачено.
Обратите внимание, что флаг WDA_EXCLUDEFROMCAPTURE можно включать и отключать по требованию. Таким образом, вы можете использовать его для скрытия конфиденциальной информации только где это необходимо.
Источник: https://www.meziantou.net/how-to-exclude-your-windows-app-from-screen-capture-and-recall.htm