puedo - ¿Qué API usaría para cambiar el brillo de la computadora portátil(.NET)?
como bajar el brillo de mi pc de escritorio windows 7 (5)
Esto es solo vista:
http://msdn.microsoft.com/en-us/library/ms775232.aspx
Debe identificar el monitor con GetPhysicalMonitorsFromHMONITOR antes de configurar su brillo con SetMonitorBrightness. Sospecho que nadie lo ha hecho antes en .net, así que probablemente necesites escribir tu propia interoperabilidad. La API no parece ser particularmente difícil, por lo que debería poder hacerlo con bastante facilidad.
Tengo Windows Server 2008 instalado en una computadora portátil Sony y el control de brillo no funciona. Me gustaría escribir un programa para permitirme cambiarlo.
Actualmente, lo que tengo que hacer es abrir el panel de control de Energía, hacer clic en la configuración avanzada y luchar en tantas cajas de UAC que cualquiera que me vea debe pensar que estoy completamente loco.
Solo quiero un pequeño programa simple para hacerlo, pero no sé a qué API llamar
Para agregar a la respuesta DaEagles, el sitio http://www.pinvoke.net/ puede ser un salvavidas cuando se trabaja con win32-apis en .Net. Si la información no existe allí, agréguela cuando haya realizado una interoperación exitosa para .Net.
Por lo que sé, no hay API administradas (.NET) para esto. Sin embargo, para Vista, hay API no administradas disponibles a través de interoperabilidad. Ver MSDN: monitorear las API de configuración y WmiSetBrightness .
Puede haber maneras manejadas de golpear el método WmiSetBrightness, pero no estoy enterado de ellos.
Si no está en Vista o Server 2008, se encontrará con un mundo desagradable: la configuración del software tendría que hacerse directamente a través del controlador del monitor. De acuerdo con su mención de UAC anterior, sospecho que este no es el caso para usted, pero el próximo tipo podría querer saber. :)
Solo una lluvia de ideas aquí ... En la computadora portátil puede cambiar el brillo usando algunas combinaciones de teclas en el teclado. Debería ser posible enviar esas teclas si solo desea oscurecerlas / aclararlas y no tener que establecerlas en un valor específico.
Busqué el enlace de John Rudy a WmiSetBrightness en MSDN y se me ocurrió 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
implementan IDisposable
. Debería llamar a Dispose()
o usar " using
" para evitar la filtración de recursos.