Frage

Ich habe Windows Server 2008 auf einem Sony-Laptop installiert und die Helligkeitssteuerung funktioniert nicht. Ich möchte ein Programm schreiben, mir zu erlauben, es zu ändern.

Zur Zeit, was ich tun müssen, ist offen die Power-Control Panel, erweiterte Einstellungen, und klicken Sie kämpfen durch so viele UAC-Boxen, dass jemand beobachtet mich denken muss ich völlig verrückt bin.

Ich möchte nur ein einfaches kleines Programm, es zu tun, aber ich weiß nicht, was API aufrufen

War es hilfreich?

Lösung

Ich sah auf WmiSetBrightness MSDN und kam mit dieser:

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);
}

Hinweis: ManagementClass, ManagementObjectCollection und ManagementObject alle implementieren IDisposable. Sie sollten Dispose() oder verwenden „using“ nennen, Ressourcen zu vermeiden undicht.

Andere Tipps

Dies ist vista nur:

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

Sie müssen den Monitor mit GetPhysicalMonitorsFromHMONITOR identifizieren, bevor seine Helligkeit mit SetMonitorBrightness Einstellung. Ich vermute, dass niemand es vorher in .net getan, so werden Sie wahrscheinlich Ihre eigene Interop schreiben müssen. Die api scheint nicht besonders schwierig zu sein, so sollten Sie in der Lage sein, es ist ziemlich einfach zu tun.

Soweit ich weiß, gibt es keine verwaltete (.NET) APIs für diese. Doch für Vista gibt es nicht verwalteten APIs verfügbar über Interop. Siehe MSDN: Monitor-Konfigurations APIs und WmiSetBrightness .

Es Weise verwaltet werden kann, die WmiSetBrightness Methode des Schlagens, aber ich bin mir nicht bewusst.

Wenn Sie nicht auf Vista oder Server 2008 sind, sind Sie in einer Welt der Unannehmlichkeit: Die Software-Konfiguration müssen direkt über den Monitor-Treiber getan würde. Basierend auf dem oben UAC zu erwähnen, ich vermuten, dass dies für Sie nicht der Fall ist, aber der nächste Kerl vielleicht wissen wollen. :)

Just a brainstormer hier ... Auf dem Laptop können Sie die Helligkeit ändern einige Schlüssel-Kombinations auf der Tastatur. Es sollte möglich sein, diese keyspresses senden Wenn Sie es nur dunkler machen wollen / leichter und nicht auf einen bestimmten Wert festgelegt hat.

Hinzufügen zu DaEagles Antwort, die http://www.pinvoke.net/ Website kann sein ein Lebensretter, wenn sie mit win32-api in .Net arbeiten. Wenn die Informationen nicht, dass es existiert, es fügen Sie, wenn Sie eine erfolgreiche Interop für .Net gemacht haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top