Regulando el brillo de nuestra pantalla con C#

Un problema que me ha pasado de manera recurrente (relacionado con los drivers) es que en mi portátil se puede dar el caso de volver de suspensión o encenderlo, y que la pantalla no se encienda, con el brillo al mínimo.

Tras probar varias alternartivas, encontré una gracias a la ayuda del siempre amable @cmilanf. Consistía en un ejecutable que accediera al control de brillo de Windows y lo estableciera al 100%. Este ejecutable debería cargar en el arranque de la sesión, o del sistema.

El ejecutable

Puestos a hacer las cosas, y aprovechando que teníamos un Visual Studio a  mano, nos dio por crear esta pequeña utilidad en C#, y tras recorrer varios sitios especializados encontramos un código que acertaba de lleno con lo que andabamos buscando:

        static void Main(string[] args1)
        {
            ManagementClass mclass = new ManagementClass("WmiMonitorBrightnessMethods");
            mclass.Scope = new ManagementScope(@"\\.\root\wmi");
            ManagementObjectCollection instances = mclass.GetInstances();

            foreach (ManagementObject instance in instances)
            {
                ulong timeout = 1; // en segundos
                ushort brightness = 100; // en porcentaje
                object[] args = new object[] { timeout, brightness };
                instance.InvokeMethod("WmiSetBrightness", args);
            }
        }

Tan sencillo como hacer un par de pruebas, compilarlo en modo release, y guardarnos el ejecutable en un lugar seguro para la segunda parte, la carga al inicio.

La carga

Una vez hecho el programa e implementado, quedaba la otra opción, cargarlo al inicio.Como el ordenador en cuestión era un Windows 8 (instalado en el MacBook de artículos anteriores), no teníamos menú inicio, como tampoco teníamos carpeta de inicio, así que nos tocó implementarlo de manera “artesanal”, es decir, como lo implementan los virus, spyware, troyanos, etc… tocando el registro.

El registro de windows es ese monstruo al que todo el mundo tiene miedo hasta que te acostumbras, como diría el tío Ben, un gran poder conlleva una gran responsabilidad, así que si vamos  con cuidado no habrá problemas.

Para agregar nuestro programa fuimos a la siguiente ruta

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

Y ahí agregamos una clave de este estilo:

Nombre de clave: Nombre de nuestro ejecutable
Tipo de clave: REG_SZ (Alfanumérico)
Valor: Ruta de nuestro ejecutable

Si todo ha ido bien, si reiniciamos el ordenador veremos que tras iniciar sesión el control de la pantalla se pondrá al máximo.

Conclusiones y Posibles mejoras

Esta solución no es perfecta, pero al menos, en mi caso me salvó de un aprieto considerable. Como posibles mejoras podrían estar implementarlo como servicio, ya que por ahora carga solamente cuando la sesión del usuario (y todo lo que ello conlleva) se ha cargado, así que me toca introducir la contraseña a ciegas.

La opción de implementarlo como servicio me permitiría que cargara antes de iniciar sesión, consiguiendo que fuese más efectivo.

Más información

Fuente original del código: Stack Overflow

Un pensamiento en “Regulando el brillo de nuestra pantalla con C#

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s