×

# C# 获取、设置、监听系统亮度

hqy hqy 发表于2026-04-08 16:56:43 浏览8 评论0

抢沙发发表评论

# C# 获取、设置、监听系统亮度

说明

用到WMI查询,引用System.Management,涉及COM,无法裁剪,则可以忽略System.Management,此dll不进行裁剪,配置如下

C#
<ItemGroup>    <TrimmerRootAssembly Include="System.Management" /></ItemGroup>

监听类

C#
public class LightWatcher : IDisposable{    public event EventHandler<BrightnessChangedEventArgs> BrightnessChanged;    public class BrightnessChangedEventArgs : EventArgs    {        public object newBrightness { get; set; }        public BrightnessChangedEventArgs(object b)        {            this.newBrightness = b;        }    }    private void WmiEventHandler(object sender, EventArrivedEventArgs e)    {        if (OperatingSystem.IsWindows())        {            if (BrightnessChanged != null)            {                BrightnessChanged(this, new BrightnessChangedEventArgs(e.NewEvent.Properties["Brightness"].Value));            }        }    }    private readonly ManagementEventWatcher _watcher;    public LightWatcher()    {DEBUG || RELEASE        if (OperatingSystem.IsWindows())        {            try            {                var scope = @"root\wmi";                var query = "SELECT * FROM WmiMonitorBrightnessEvent";                _watcher = new ManagementEventWatcher(scope, query);                _watcher.EventArrived += new EventArrivedEventHandler(WmiEventHandler);                _watcher.Start();            }            catch (Exception e)            {                Console.WriteLine("Exception {0} Trace {1}", e.Message, e.StackTrace);            }        }    }    public void Dispose()    {        if (OperatingSystem.IsWindows())        {            if (_watcher != null)            {                _watcher.Stop();            }            _watcher.Dispose();        }    }}

获取、设置类

C#
public static class LightWmiHelper{    public static int GetBrightnessLevel()    {        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)            {            }            catch (Exception)            {            }        }        return 0;    }    public static void SetBrightnessLevel(int brightnessLevel)    {        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)            {            }            catch (Exception)            {            }        }    }}


打赏

本文链接:https://www.kinber.cn/post/6409.html 转载需授权!

分享到:


推荐本站淘宝优惠价购买喜欢的宝贝:

image.png

 您阅读本篇文章共花了: 

群贤毕至

访客