Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What API call would I use to change brightness of laptop (.NET)?

I have Windows Server 2008 installed on a Sony laptop and the brightness control doesn't work. I'd like to write a program to allow me to change it.

Currently what I have to do is open the Power control panel, click advanced settings, and fight through so many UAC boxes that anybody watching me must think I'm completely crazy.

I just want a simple little program to do it but i dont know what API to call

like image 224
Simon_Weaver Avatar asked Dec 17 '08 00:12

Simon_Weaver


People also ask

How do you change the brightness on a laptop?

The Brightness slider appears in action center in Windows 10, version 1903. To find the brightness slider in earlier versions of Windows 10, select Settings > System > Display, and then move the Change brightness slider to adjust the brightness.

Which driver is used for brightness?

Brightness controls are implemented in the monitor driver, Monitor. sys, supplied by the operating system. The monitor driver implements a Windows Management Instrumentation (WMI) interface to allow applications (such as the operating system's brightness slider) to interact with the brightness level.


1 Answers

I looked up John Rudy's link to WmiSetBrightness in MSDN and came up with this:

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

Note: ManagementClass, ManagementObjectCollection, and ManagementObject all implement IDisposable. You should call Dispose() or use "using" to avoid leaking resources.

like image 163
Lucas Avatar answered Sep 30 '22 16:09

Lucas