internal static void SetBrightnessLevel(int brightnessLevel)
{
if (brightnessLevel < 0 ||
brightnessLevel > 100)
throw new ArgumentOutOfRangeException("brightnessLevel");
try
{
var s = new ManagementScope("root\\WMI");
var q = new SelectQuery("WmiMonitorBrightnessMethods");
var mos = new ManagementObjectSearcher(s, q);
var moc = mos.Get();
foreach (var managementBaseObject in moc)
{
var o = (ManagementObject)managementBaseObject;
o.InvokeMethod("WmiSetBrightness", new object[]
{
UInt32.MaxValue,
brightnessLevel
});
}
moc.Dispose();
mos.Dispose();
}
catch (ManagementException ex)
{
// ignore
// it is possible that laptop lid is closed, and using external monitor
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}