プログラミングメモ:C#でノートPCの液晶の輝度を制御する(Vista限定)

VistaではWMIを通してコントロール(管理)できるものが増えました。液晶の輝度調整もその一つです。

今回は、WmiMonitorBrightnessを使用した液晶の輝度(明るさ)を制御する方法をご紹介します。

*****************************************
//using System.Management;
//とすること。

//初期化//

//ManagementClassを取得し、操作することになる
ManagementClass WmiMonitorBrightness, WmiMonitorBrightnessMethods;

//主に現在の輝度を取得するためのオブジェクト
WmiMonitorBrightness = new ManagementClass(“root\wmi”, @”WmiMonitorBrightness”, null);

//主に輝度を設定するためのオブジェクト
WmiMonitorBrightnessMethods = new ManagementClass(“root\wmi”, @”WmiMonitorBrightnessMethods”, null);

*****************************************

ここまでは初期化のコードを書きました。
では、手始めに輝度を取得してみましょう。

*****************************************

//WmiMonitorBrightness.GetInstances()
//はコントロールできるもの(モニタ?)の数だけ
//ManagementObjectインスタンスを返す。

foreach (ManagementObject mo in WmiMonitorBrightness.GetInstances())
{
_currentBrightness =(int)mo[“CurrentBrightness”];
//WMIオブジェクト?のプロパティを参照するときは、上記のようにする
//CurrentBrightnessはパーセント単位で現在の輝度を返す

break; //この例では一番最初のものの結果だけを取得

}
*****************************************

輝度を設定するには次のように書きます。

*****************************************
foreach (ManagementObject mo in WmiMonitorBrightnessMethods.GetInstances())
{
ManagementBaseObject inParams = mo.GetMethodParameters(“WmiSetBrightness”);
//WmiSetBrightnessというWMIのメソッドを呼び出すために
//必要なパラメータのリスト?を取得する

inParams[“Brightness”] = 50; //輝度を50%に
inParams[“Timeout”] = 5; //操作のタイムアウトを5秒にセット

//WmiSetBrightnessを呼び出す
//InovokeMethodの引数にはinParamsを指定する。

ManagementBaseObject outParams = mo.InvokeMethod(“WmiSetBrightness”, inParams, null);

//outParamsには結果が返ってくるが、この例では使わない
}

これをクラスにしてみました。
表示義務を除いた修正BSD Licenseとしますので、著作権は保持しますが適当に使っていただいて結構です。

ソースファイルをダウンロード

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です