Yah, esté o no de acuerdo la comunidad de desarrolladores, Microsoft tiene varios estándares sobre cuándo y por qué podría ser aceptable el uso exclusivo del monitor.
La estrategia más oficial es usar DirectX en modo exclusivo. Esto es lo que hacen los juegos, lo que Windows Media Player hace en video de pantalla completa con aceleración de hardware habilitada, etc. Si su aplicación requiere multimedia (según lo sugerido por la TV como funcionalidad), probablemente también deba usar DirectX . Además de brindarle acceso exclusivo a la pantalla, también aumentará el rendimiento de sus aplicaciones a la vez que reducirá la carga de la CPU (ya que sobrecargará los gráficos a la tarjeta de video cuando sea posible).
Si DirectX no es una opción, hay una gran cantidad de hacks disponibles que parecen comportarse de forma diferente entre varias generaciones de sistemas operativos Windows. Por lo tanto, es posible que deba estar preparado para implementar varias técnicas para cubrir cada sistema operativo que tenga previsto admitir.
Una técnica es configurar su aplicación como protector de pantalla actualmente en ejecución. Un salvapantallas si realmente solo un EXE renombrado a SCR con ciertos interruptores de línea de comando debería ser compatible. Pero puede escribir su propia aplicación para que sea un salvapantallas y un pequeño trozo de iniciador que lo configure como salvapantallas y lo inicie. Al salir, la aplicación debe devolver la configuración original del protector de pantalla (tal vez el iniciador espera a que el proceso salga para que devuelva la configuración tanto en salidas elegantes como en terminaciones de proceso no planificadas, es decir, falla de la aplicación). Sin embargo, no estoy seguro si este comportamiento es constante en todas las plataformas, tendrás que probarlo.
Evitar que otras aplicaciones creen controladores de ventanas es realmente un truco en mi opinión y bastante malo que no apreciaría como cliente de dicho software.
Una llamada constante BringWindowToTop()
para mantenerte en el frente es mejor (no rompe otro software) pero todavía un poco hack-ish.
Hmya, estos mensajes son muy importantes. Considerar que tu aplicación es lo más importante es una batalla que es difícil de ganar. También es bastante cuestionable suprimir la notificación de "La placa madre está en llamas". Deberá convencer a Windows de que el usuario está utilizando activamente la ventana. Un poco difícil con una aplicación de TV. Puede generar alguna entrada falsa con la función SendInput(). –
Lol, no sabía que había una notificación de "La placa madre está en llamas" – Randomblue
Podría probarlo con un soplete. –