画面の明るさ(バックライトの輝度)を設定/取得する
Windows Mobileのコントロールパネルのシステムタブにある「バックライト」で輝度を変更出来ます。
今回は、プログラム上からバックライトの輝度を変更する方法をご紹介します。

S11HT(EMONSTER)の「バックライト」の設定画面です。このバッテリィ使用時と、外部電源使用時のバックライト輝度設定値は、それぞれ下記のレジストリに対応しています。
- HKEY_CURRENT_USER\ControlPanel\Backlight\Brightness
- HKEY_CURRENT_USER\ControlPanel\Backlight\ACBrightness
このレジストリ値を変更する事で、連動して画面の明るさ(バックライトの輝度)が変わります。
バックライトの輝度を設定する
Using backLight As RegistryKey = Registry.CurrentUser.CreateSubKey("ControlPanel\Backlight")
' バッテリー駆動時
backLight.SetValue("Brightness", value)
' AC電源駆動時
backLight.SetValue("ACBrightness", value)
End Using
using (RegistryKey backLight = Registry.CurrentUser.CreateSubKey("ControlPanel\\Backlight")) {
// バッテリー駆動時
backLight.SetValue("Brightness", value);
// AC電源駆動時
backLight.SetValue("ACBrightness", value);
}
バックライトの輝度を取得する
Using backLight As RegistryKey = Registry.CurrentUser.CreateSubKey("ControlPanel\Backlight")
' バッテリー駆動時
Dim brightness As Object = backLight.GetValue("Brightness")
' AC電源駆動時
Dim ac_brightness As Object = backLight.GetValue("ACBrightness")
End Using
using (RegistryKey backLight = Registry.CurrentUser.CreateSubKey("ControlPanel\\Backlight")) {
// バッテリー駆動時
object brightness = backLight.GetValue("Brightness");
// AC電源駆動時
object ac_brightness = backLight.GetValue("ACBrightness");
}
複数の端末に対応する際の注意点
ここで紹介したコードは実際にS11HT上にて動作確認を取っておりますが、バックライトの輝度情報が格納されているレジストリ名や設定値の有効な範囲等、OEMメーカーのハードウェアとドライバ(実装)に依存する為、前記のコードでは変更出来ない可能性もあります。
手元にある国内で流通している端末で確認してみた所、OEMメーカー毎によってこれだけ違いますので注意してください。
| SHARP Advanced/W-ZERO3[es] | TOSHIBA X01T | HTC S11HT | |
|---|---|---|---|
| バッテリ使用時 | BatteryBrightness | Brightness | BrightNess |
| 外部電使用時 | ACBrightness | Brightness | ACBrightNess |
| 調整値 | 0~6 | 0~255 | 0~10 |