Files
linker/cmonitor/client/reports/light/LightWindowsWmiHelper.cs

89 lines
2.6 KiB
C#

#if DEBUG || RELEASE
using System.Management;
#endif
using common.libs;
namespace cmonitor.client.reports.light
{
public static class LightWindowsWmiHelper
{
public static int GetBrightnessLevel()
{
#if DEBUG || RELEASE
if (OperatingSystem.IsWindows())
{
try
{
var s = new ManagementScope("root\\WMI");
var q = new SelectQuery("WmiMonitorBrightness");
var mos = new ManagementObjectSearcher(s, q);
var moc = mos.Get();
foreach (var managementBaseObject in moc)
{
foreach (var o in managementBaseObject.Properties)
{
if (o.Name == "CurrentBrightness")
return Convert.ToInt32(o.Value);
}
}
moc.Dispose();
mos.Dispose();
}
catch (ManagementException)
{
//Logger.Instance.Error(ex);
}
catch (Exception)
{
//Logger.Instance.Error(ex);
}
}
#endif
return 0;
}
public static void SetBrightnessLevel(int brightnessLevel)
{
#if DEBUG || RELEASE
if (OperatingSystem.IsWindows())
{
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)
{
// Logger.Instance.Error(ex);
}
catch (Exception)
{
// Logger.Instance.Error(ex);
}
}
#endif
}
}
}