Cosa chiamata API dovrei usare per modificare la luminosità del computer portatile (NET)?

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

  •  22-08-2019
  •  | 
  •  

Domanda

Ho Windows Server 2008 installato su un computer portatile Sony e il controllo della luminosità non funziona. Mi piacerebbe scrivere un programma per permettermi di cambiarlo.

Al momento quello che devo fare è aprire il pannello di controllo di alimentazione, fare clic su impostazioni avanzate, e combattere attraverso tanti scatole di UAC che qualcuno guarda me deve pensare che io sia completamente pazzo.

Voglio solo un piccolo e semplice programma per farlo, ma io non so cosa API chiamare

È stato utile?

Soluzione

Ho guardato Link John Rudy s 'a WmiSetBrightness MSDN e si avvicinò con questo:

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 tutto implementano IDisposable. Si dovrebbe chiamare Dispose() o utilizzare "using" per evitare perdite di risorse.

Altri suggerimenti

Questa è vista solo:

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

È necessario identificare il monitor con GetPhysicalMonitorsFromHMONITOR prima di impostare la sua luminosità con SetMonitorBrightness. Ho il sospetto che nessuno ha fatto prima in .net in modo probabilmente avrete bisogno di scrivere il proprio interoperabilità. L'API non sembra essere particolarmente difficile così si dovrebbe essere in grado di farlo abbastanza facilmente.

Per quanto io sappia, non ci sono le API (NET) gestiti per questo. Tuttavia, per Vista, ci sono le API non gestite disponibili tramite interoperabilità. Vedere MSDN: API configurazione del monitor e WmiSetBrightness .

Ci possono essere gestiti modi di colpire il metodo di WmiSetBrightness, ma io non sono a conoscenza di loro.

Se non sei su Vista o Server 2008, siete dentro per un mondo di sgradevolezza: La configurazione del software dovrebbe essere fatta direttamente tramite il driver del monitor. Sulla base della sua menzionare UAC sopra, ho il sospetto che questo non è il caso per voi, ma il prossimo ragazzo potrebbe desiderare di sapere. :)

A soli brainstormer qui ... Sul computer portatile è possibile modificare la luminosità utilizzando alcune-Kombinations chiave sulla tastiera. Dovrebbe essere possibile inviare tali keyspresses Se si desidera solo per renderlo più scuro / più leggero e non c'è bisogno di impostarla su un valore specifico.

Per aggiungere a DaEagles risposta, il http://www.pinvoke.net/ sito può essere un risparmiatore di vita quando si lavora con Win32 API in .NET. Se le informazioni non esiste lì, si prega di aggiungere che quando hai fatto un interoperabilità successo per .Net.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top