VistaではWMIを通してコントロールできるものが増えました。WmiMonitorBrightnessを使用した液晶の輝度(明るさ)を制御する方法をご紹介します。
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としますので、著作権は保持しますが適当に使っていただいて結構です。
ソースファイルをダウンロード