C# 讀取/寫入 筆電螢幕亮度

WMI控制亮度只適用於筆電螢幕;不能用在外接螢幕(DDC/CI)

使用了WmiMonitorBrightnessWmiMonitorBrightnessMethods

exe執行檔下載

using System.Management;

public void SetBrightness(byte brightness)
{
    var scope = new ManagementScope("root\\WMI");
    var query = new SelectQuery("WmiMonitorBrightnessMethods");

    using (var searcher = new ManagementObjectSearcher(scope, query))
    {
        foreach (ManagementObject obj in searcher.Get())
        {
            // 參數 0 = timeout,brightness = 亮度
            obj.InvokeMethod("WmiSetBrightness",
                new object[] { UInt32.MaxValue, brightness });
        }
    }
}

public byte GetCurrentBrightness()
{
    var searcher = new ManagementObjectSearcher(
        "root\\WMI",
        "SELECT * FROM WmiMonitorBrightness"
    );

    foreach (ManagementObject obj in searcher.Get())
    {
        return (byte)obj["CurrentBrightness"];
    }

    throw new Exception("無法讀取螢幕亮度");
}

private void button1_Click(object sender, EventArgs e)
{
    try
    {
        byte brightness = GetCurrentBrightness();
        textBox1.Text = brightness.ToString();
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

throw new Exception("無法讀取螢幕亮度"); 主動「丟出錯誤」,中斷目前流程,通知呼叫端發生異常狀況。

配合try / catch使用

留言