Yah, indipendentemente dal fatto che la comunità di sviluppo sia d'accordo, Microsoft ha diversi standard per quando e perché potrebbe essere accettabile l'uso esclusivo del monitor.
La strategia più ufficiale è utilizzare DirectX in modalità esclusiva. Ecco cosa fanno i giochi, cosa fa Windows Media Player in video a schermo intero con accelerazione hardware abilitata, ecc ... Se la tua applicazione è multimediale (come suggerito dalla funzionalità TV), probabilmente dovresti usare anche DirectX . Oltre a darti l'esclusivo accesso al display, aumenterà anche le prestazioni delle tue applicazioni riducendo al contempo il carico della CPU (poiché sovraccaricherà la grafica sulla scheda video quando possibile).
Se DirectX non è un'opzione, è disponibile un gran numero di hack che sembrano comportarsi in modo diverso tra varie generazioni di sistemi operativi Windows. Quindi potrebbe essere necessario essere pronti a implementare diverse tecniche per coprire ogni sistema operativo che si intende supportare.
Una tecnica consiste nell'impostare l'applicazione come salvaschermo attualmente in esecuzione. Uno screensaver se in realtà solo un EXE rinominato in SCR con determinati switch a linea di comando dovrebbe supportare. Ma puoi scrivere la tua applicazione per essere uno screensaver e un piccolo stub di avvio che lo imposta come salvaschermo e lo avvia. All'uscita l'applicazione dovrebbe restituire le impostazioni originali del salvaschermo (forse il programma di avvio attende che il processo venga chiuso in modo che restituisca le impostazioni in entrambe le uscite aggraziate e tutte le terminazioni del processo non pianificate, vale a dire: arresto anomalo dell'app). Non sono sicuro che questo comportamento sia coerente su tutte le piattaforme, dovrai testarlo.
Prevenire altre applicazioni dalla creazione di handle di finestre è davvero un problema a mio avviso e piuttosto brutto che non apprezzerei come cliente di tale software.
Una costante BringWindowToTop()
chiamata per tenervi di fronte è migliore (non infrange altro software) ma ancora un po 'hack-ish.
Hmya, questi messaggi sono molto importanti. Considerare la tua app più importante è una battaglia difficile da vincere. È anche piuttosto discutibile sopprimere la notifica "Motherboard is on fire". Dovrai convincere Windows che l'utente sta attivamente utilizzando la finestra. Un po 'difficile con un'app TV. È possibile generare alcuni input falsi con la funzione SendInput(). –
Lol, non sapevo che c'era una notifica "Scheda madre in fiamme" – Randomblue
Si potrebbe testarlo con una torcia. –