動機
メインで Windows10 のノート PC を使用しているのですが、持ち歩くことが多く環境によってディスプレイの明るさを変えなければならない場面が度々ありました。
そこで、いつも手動で画面の明るさを変更するのは面倒だなと思い、自分専用の「ディスプレイ輝度変更アプリ」を作ってしまえ!というのが動機です。
イメージ画像
プロトで作ってみたので、UI としてはとてもそっけないです。
UI の明るさ最大(100)を選択すればディスプレイの輝度が最大に、明るさやや暗め(40) を選択すればディスプレイの輝度は 40 になります。
ソース
MainWindow.xaml
MainWindow.xaml
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="450" Width="800">
<Grid>
<Button x:Name="button" Content="明るさ最大(100)" HorizontalAlignment="Left" Margin="246,40,0,0" VerticalAlignment="Top" Width="229" Height="126" Click="button_Click"/>
<Button x:Name="button1" Content="明るさやや暗め(40)" HorizontalAlignment="Left" Margin="249,213,0,0" VerticalAlignment="Top" Width="226" Height="139" Click="button1_Click"/>
</Grid>
</Window>
MainWindow.xaml.cs
MainWindow.xaml.cs
using System.Management;
using System.Windows;
namespace WpfApp1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
// クリック後、画面表示
//MessageBox.Show("Hello, world!!");
// 輝度変更
DeviceManager.Brightness.BrightnessController bc = new DeviceManager.Brightness.BrightnessController();
bc.SetBrightness(100); // 輝度 100
}
private void button1_Click(object sender, RoutedEventArgs e)
{
// 輝度変更
DeviceManager.Brightness.BrightnessController bc = new DeviceManager.Brightness.BrightnessController();
bc.SetBrightness(40); // 輝度 40
}
}
}
namespace DeviceManager.Brightness
{
class BrightnessController
{
ManagementClass WmiMonitorBrightnessMethods = new ManagementClass("root/wmi", "WmiMonitorBrightnessMethods", null);
public void SetBrightness(int level)
{
foreach (ManagementObject mo in WmiMonitorBrightnessMethods.GetInstances())
{
ManagementBaseObject inParams = mo.GetMethodParameters("WmiSetBrightness");
inParams["Brightness"] = level;
inParams["Timeout"] = 5;
mo.InvokeMethod("WmiSetBrightness", inParams, null);
}
}
}
}}
おわりに
自分自身はまだ C# に詳しくないですが、自分の生活が豊かになるものを作れる程度に、これから少しずつ勉強していけたらなと思っています。
なお、C# を使った今後の目的は、自分専用の Windows10 環境を簡単に変更することができるアプリを作っていきたいな、と思っています。