2011-08-22 15 views
7

Estoy escribiendo un programa en C# .net que cambia el fondo del escritorio solo cuando el escritorio no está visible para el usuario, es decir, está completamente cubierto de alguna manera por las ventanas actualmente abiertas.¿Cómo puedo comprobar si las ventanas abiertas cierran por completo el escritorio?

Idealmente, la solución desencadenaría un evento siempre que detectara un cambio en la visibilidad del escritorio, pero ahora no estoy seguro de cómo controlar la visibilidad, además de escanear cada píxel (increíblemente ineficiente) o periódicamente bucle a través de todas las ventanas abiertas y el control de sus dimensiones (siendo ineficiente y no tengo ni idea de cómo poner en práctica.)

he estado jugando con Windows.Forms.Screen y los métodos enumerados user32.dll here, pero paraíso Logró descubrir algo efectivo.

¡Muchas gracias a todos los que tienen la amabilidad de ayudar!

+5

La barra de tareas de Windows 7 es transparente. Entonces nunca es completamente invisible. De lo contrario, no puede evitar EnumWindows + GetWindowRect. Oh, Aero miente sobre el tamaño de la ventana. ¿Por qué no lo cambias? –

+1

Este es un escenario interesante. No hubiera pensado solo en cambiar el fondo cuando no es visible. – Amy

+0

¿Qué sucede si el escritorio está completamente cubierto, pero con ventanas de 1% de opacidad? De 99% de opacidad? – AakashM

Respuesta

Cuestiones relacionadas