Lo llamada a la API debería utilizar para cambiar el brillo de la computadora portátil (NET)?

StackOverflow https://stackoverflow.com/questions/373297

  •  22-08-2019
  •  | 
  •  

Pregunta

Tengo Windows Server 2008 instalado en un ordenador portátil Sony y el control de brillo no funciona. Me gustaría escribir un programa para permitir que cambie la misma.

En la actualidad lo que tengo que hacer es abrir el panel de control de energía, haga clic en la configuración avanzada, y luchar a través de tantas cajas de UAC que nadie me mira que pensar que estoy completamente loca.

Sólo quiero un pequeño y sencillo programa para hacerlo, pero no sé qué API para llamar

¿Fue útil?

Solución

Miré hacia arriba John Rudy 's enlace a WmiSetBrightness en MSDN y se acercó con esto:

ManagementClass mclass = new ManagementClass("WmiMonitorBrightnessMethods");
mclass.Scope = new ManagementScope(@"\\.\root\wmi");
ManagementObjectCollection instances = mclass.GetInstances();

// I assume you get one instance per monitor
foreach(ManagementObject instance in instances)
{
    ulong timeout = 1; // in seconds
    ushort brightness = 50; // in percent
    object[] args = new object[] { timeout, brightness };
    instance.InvokeMethod("WmiSetBrightness", args);
}

Nota: ManagementClass, ManagementObjectCollection y ManagementObject todo implementan IDisposable. Debe llamar Dispose() o use "using" para evitar la fuga de recursos.

Otros consejos

Esto es vista solamente:

http://msdn.microsoft.com/en-us/library /ms775232.aspx

Es necesario identificar el monitor con GetPhysicalMonitorsFromHMONITOR antes de su brillo con SetMonitorBrightness. Sospecho que nadie lo ha hecho antes en .NET por lo que probablemente necesitaré para escribir su propia interoperabilidad. La API no parece ser particularmente difícil por lo que debe ser capaz de hacerlo con bastante facilidad.

Por lo que yo sé, no hay (.NET) API administradas para esto. Sin embargo, para Vista, hay API no administradas disponibles a través de interoperabilidad. Ver MSDN: API de configuración del monitor y WmiSetBrightness .

Puede haber formas de golpear el método WmiSetBrightness administrado, pero no estoy al tanto de ellos.

Si no está en Vista o Server 2008, usted se encontrará con un mundo de desagrado: La configuración del software tendría que ser hecho directamente a través del controlador del monitor. En base a su mencionar UAC anteriormente, sospecho que este no es el caso para usted, pero el que más podría querer saber. :)

Sólo un brainstormer aquí ... En la computadora portátil se puede cambiar el brillo usando algunos kombinations-clave en el teclado. Debería ser posible enviar esos keyspresses Si lo que desea es que sea más oscuro / más ligero y no tiene que establecer en un valor específico.

Para añadir a la respuesta DaEagles, el http://www.pinvoke.net/ sitio puede ser un salvavidas cuando se trabaja con Win32 API en .Net. Si la información no existe allí, por favor añadir que cuando se ha hecho una interoperabilidad exitosa para .Net.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top