Blog

Privacy · Guide

Come nascondere un assistente AI dalla condivisione dello schermo su Windows (Win32 e DirectX)

The Odrivyn team · Aggiornato · 9 min di lettura

In breve

Windows nasconde le finestre dell'applicazione dall'acquisizione dello schermo tramite l'API SetWindowDisplayAffinity con il flag WDA_EXCLUDEFROMCAPTURE. Il Window Manager del desktop di Windows ignora la finestra durante i passaggi di acquisizione dello schermo ed esegue invece il rendering dello sfondo del desktop sottostante. Zoom, Microsoft Teams, Google Meet e i registratori dello schermo catturano solo il contenuto sotto la finestra dell'assistente.

Perché le applicazioni di note standard falliscono durante la condivisione dello schermo

La condivisione dello schermo rimane un requisito quotidiano per presentazioni remote, colloqui tecnici e dimostrazioni di software. I relatori condividono l'intero display del desktop per alternare editor di codice, browser Web e diapositive di presentazione senza interrompere il flusso della riunione.

Le applicazioni standard per prendere appunti (come Notion, Obsidian e editor di testo di sistema) disegnano le loro interfacce sulla superficie di composizione desktop condivisa. Quando apri una finestra di nota per controllare i punti di discussione o le richieste del colloquio, ogni partecipante alla riunione visualizza il contenuto.

La condivisione di una finestra di programma isolata introduce attriti pratici. Le notifiche di sistema, gli avvisi in background e le finestre di dialogo popup di altri software spesso si sovrappongono al confine dell'applicazione condivisa, causando l'esposizione involontaria di dati riservati.

La pipeline di composizione di Windows Desktop Window Manager

Windows coordina il rendering della visualizzazione grafica tramite Desktop Window Manager (dwm.exe). In Windows 10 versione 2004 (build 19041), Microsoft ha espanso la funzione Win32 SetWindowDisplayAffinity aggiungendo la costante WDA_EXCLUDEFROMCAPTURE.

La funzione accetta un handle di finestra nativo (HWND) e un parametro di affinità: WDA_NONE (0x00), WDA_MONITOR (0x01) o WDA_EXCLUDEFROMCAPTURE (0x11).

Quando il software registra WDA_EXCLUDEFROMCAPTURE, il motore di composizione considera trasparente la superficie della finestra specifica ogni volta che un processo esterno richiama le API di acquisizione dello schermo. Il sistema operativo copia lo sfondo del desktop sottostante nel buffer di acquisizione, dipingendo la finestra dell'assistente sul monitor hardware fisico.

Le piattaforme per conferenze (inclusi Zoom, Microsoft Teams, Google Meet e Slack) acquisiscono fotogrammi dello schermo tramite routine Windows Graphics Capture o BitBlt standard. Il sistema operativo applica il filtro di affinità di visualizzazione prima di restituire i frame buffer al software della riunione.

Composizione della swapchain DirectX e albero delle finestre del desktop

Windows Desktop Window Manager coordina gli aggiornamenti di visualizzazione tramite swapchain Direct3D. Quando un'applicazione dipinge la propria interfaccia, invia le superfici pixel a DWM, che combina le singole superfici delle finestre in un unico fotogramma di visualizzazione.

Gli strumenti legacy di acquisizione dello schermo si basavano sulla funzione GDI Win32 BitBlt, che copiava blocchi di pixel raster dal contesto del dispositivo dello schermo. I moderni software per conferenze utilizzano l'API Windows Graphics Capture o l'API Desktop Duplication, che leggono direttamente dalle superfici della memoria video Direct3D.

Poiché WDA_EXCLUDEFROMCAPTURE agisce all'interno dell'albero di composizione DWM principale, l'esclusione si applica sia allo scraping dello schermo GDI legacy che alle moderne pipeline video Direct3D. La pipeline di composizione del sistema operativo scambia la superficie della finestra esclusa con la superficie dello sfondo prima di inviare il frame buffer al consumer di acquisizione.

Perché il browser Web e i window wrapper di Electron perdono durante la presentazione

Molte utilità desktop impacchettano i motori Web all'interno di wrapper Electron o Chromium. Questi framework introducono livelli di astrazione tra l'applicazione e il sistema operativo sottostante.

Quando un'applicazione Electron tenta di attivare/disattivare la visibilità della finestra, la sua architettura multiprocesso spesso crea condizioni di competizione. La finestra del browser viene disegnata su una catena di scambio DirectX separata prima che la chiamata di affinità Win32 si colleghi all'handle della finestra di livello superiore. Nelle configurazioni multi-monitor, lo spostamento di una finestra su schermi con diversi fattori di scala DPI può reimpostare gli stili delle finestre, facendo lampeggiare note riservate sul feed video condiviso.

Odrivyn previene queste perdite visive compilando come binario desktop nativo di Rust. Il programma applica WDA_EXCLUDEFROMCAPTURE durante la creazione della finestra iniziale prima di visualizzare un singolo fotogramma, prevenendo l'esposizione accidentale su tutte le configurazioni del monitor.

Compatibilità dell'acquisizione dello schermo con le principali applicazioni per conferenze

Verificato su Windows 10 Enterprise e Windows 11 Pro su driver hardware di visualizzazione Intel, AMD e NVIDIA.

Software per conferenzeModalità di cattura selezionataStato della finestra dell'assistenteCosa visualizzano i partecipanti alla riunione
Client desktop ZoomCondividi schermo intero (Desktop 1)Escluso dal buffer di acquisizioneSfondo del desktop e finestre delle applicazioni posizionate dietro l'assistente
Microsoft TeamsCondivisione dell'intero schermoEscluso dal buffer di acquisizioneContenuti sottostanti senza contorni di finestre o artefatti visivi
Google Meet (Chrome/Edge)Scheda schermo interoEscluso dal buffer di acquisizioneSfondo del desktop pulito con frame rate costante e zero sfarfallio
Riunioni lenteTrasmissione a monitor completoEscluso dal buffer di acquisizioneSolo le applicazioni eseguite sotto l'interfaccia Odrivyn
OBS Studio/CamtasiaVisualizza la sorgente di acquisizioneEscluso dal buffer di acquisizioneFeed video registrato pulito contenente zero sovrapposizioni di assistenti
Strumento di cattura di WindowsCattura rettangolare (Win+Shift+S)Escluso dal buffer di acquisizioneLo screenshot salvato mostra lo sfondo con zero pixel di sovrapposizione

Comportamento di esclusione dell'acquisizione del sistema operativo verificato con l'accelerazione hardware abilitata.

Verifica passo passo: verifica che la tua finestra rimanga nascosta prima di una chiamata

Segui questo audit in quattro fasi sulla tua postazione di lavoro prima di iniziare un'importante presentazione al cliente o un colloquio remoto.

Passaggio 1: apri Odrivyn e posiziona la finestra sullo sfondo del desktop o su una pagina del browser Web aperta.

Passaggio 2: premere la combinazione di tasti di scelta rapida di Windows: tasto Windows + Maiusc + S. Questa scorciatoia da tastiera richiama la sovrapposizione dello Strumento di cattura di Windows.

Passaggio 3: trascina un rettangolo di selezione sull'area dello schermo in cui si trova la finestra di Odrivyn.

Passaggio 4: incolla lo screenshot catturato in un visualizzatore di immagini o in un documento. Se l'affinità di visualizzazione funziona come previsto, l'immagine mostra lo sfondo del desktop o il contenuto del browser, senza traccia della finestra dell'assistente.

Passaggio 5: avvia una riunione di prova individuale in Zoom o Microsoft Teams, condividi l'intero schermo del desktop e controlla il riquadro di anteprima della riunione per confermare l'isolamento visivo.

Prestazioni architetturali: spazio di memoria nativo di Rust Win32 vs Electron

Le applicazioni desktop pesanti basate sul bundle Electron o Chromium completano i runtime del browser Web, consumando da 500 a 900 megabyte di memoria di lavoro e creando conflitti nel contesto della GPU durante la condivisione del monitor 4K.

Odrivyn si compila come applicazione Rust nativa con collegamenti per la creazione di finestre Win32. Il file eseguibile pesa 5,7 megabyte e consuma 34 megabyte di memoria residente durante le riunioni attive.

La leggera architettura nativa previene la perdita di frame durante le presentazioni su schermo e applica WDA_EXCLUDEFROMCAPTURE all'inizializzazione della finestra, garantendo che l'applicazione non esegua mai il rendering di un frame visivo non protetto.

Domande frequenti

L'esclusione dell'acquisizione richiede privilegi di amministratore?

No. Qualsiasi processo Windows standard a livello utente può impostare l'affinità di visualizzazione sulle finestre create all'interno del proprio thread di esecuzione.

I partecipanti alla chiamata possono rilevare un bot dei partecipanti alla riunione?

Nessun bot partecipa alla riunione. Il software funziona come un programma desktop locale indipendente che legge l'audio dai driver della scheda audio locale.

WDA_EXCLUDEFROMCAPTURE funziona su versioni Windows precedenti?

È richiesto Windows 10 versione 2004 (build 19041) o successiva. Nelle build più vecchie, il sistema operativo esegue il rendering di una solida scatola nera anziché di un livello di acquisizione trasparente.

L'affinità display protegge dalle videocamere esterne?

No. L'affinità di visualizzazione indica al software di acquisizione del sistema operativo di saltare la finestra. Non può impedire a una fotocamera fisica puntata sul monitor hardware di catturare la luce emessa.

Posso disattivare l'esclusione dell'acquisizione se desidero mostrare le note?

Sì. Puoi attivare o disattivare la protezione dall'acquisizione in Impostazioni ogni volta che scegli di mostrare l'assistente ai colleghi.

Fonti

Porta Odrivyn alla tua prossima chiamata

Gratuito per Windows. Pronto in cinque minuti.

Continua a leggere