O que chamada de API que eu iria usar para alterar o brilho do laptop (.NET)?
-
22-08-2019 - |
Pergunta
Eu tenho o Windows Server 2008 instalado em um laptop Sony eo controle de brilho não funciona. Eu gostaria de escrever um programa para permitir-me a mudá-lo.
Atualmente o que tenho a fazer é abrir o painel de controle de Energia, clique em configurações avançadas, e lutar por tantas caixas UAC que alguém me observando deve pensar que sou completamente louco.
Eu só quero um programa pequeno e simples de fazê-lo, mas eu não sei o API para chamar
Solução
Eu olhei para cima John Rudy 's link para WmiSetBrightness em MSDN e veio com esta:
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
e ManagementObject
tudo implementar IDisposable
. Você deve chamar Dispose()
ou o uso "using
" para evitar vazamento de recursos.
Outras dicas
Este é vista apenas:
http://msdn.microsoft.com/en-us/library /ms775232.aspx
Você precisa identificar o monitor com GetPhysicalMonitorsFromHMONITOR antes de definir o seu brilho com SetMonitorBrightness. Eu suspeito ninguém fez isso antes em .net então você provavelmente precisará escrever seu próprio interoperabilidade. A api não parece ser particularmente difícil para que você deve ser capaz de fazê-lo com bastante facilidade.
Tanto quanto eu estou ciente, não há gerenciado (.NET) APIs para isso. No entanto, para o Vista, existem APIs não gerenciadas disponíveis através de interoperabilidade. Veja MSDN: APIs configuração do monitor e WmiSetBrightness .
Pode ser gerido maneiras de bater o método WmiSetBrightness, mas eu não estou ciente deles.
Se você não estiver em Vista ou Server 2008, você está em um mundo de coisas desagradáveis: A configuração do software teria que ser feito diretamente através do controlador do monitor. Com base na sua mencionar UAC acima, eu suspeito que este não é o caso para você, mas o próximo cara pode querer saber. :)
Apenas um brainstormer aqui ... No laptop, você pode alterar o brilho usando algumas-chave kombinations no teclado. Deve ser possível enviar esses keyspresses Se você quiser apenas para torná-lo mais escuro / mais leve e não tem que configurá-lo para um valor específico.
Para adicionar a resposta DaEagles, o site http://www.pinvoke.net/ pode ser um salva-vidas quando se trabalha com Win32 APIs em .Net. Se a informação não existe lá, por favor adicioná-lo quando você fez um interoperabilidade bem sucedida para .Net.