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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top