ノートパソコンの画面の音量をボタン一つで変更する【C#】

# 動機

前回、以下の記事を作成しました。

> 参考： [ノートパソコンの画面の明るさをボタン一つで変更する【C#】](https://qiita.com/kewpie134134/items/d81461aab1ab1b9a26af)

そこで、画面の明るさを変更できるなら、音量の変更も同じ感じでC#でパパッと作れるのではないかと思い、作成しました。

なお、作成に関しては WpfApp で作成しました。

# イメージ画像

今回もプロト作品のため、UIはそっけないものです。

「音量を100にする」を選択すればノートパソコンの音量が100に、「音量を30にする」を選択すればノードパソコンの音量が30になります。

![音量.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/407150/7691095d-6602-f5d3-6f48-1453d0d7aa13.png)


# ソース

## 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="217,56,0,0" VerticalAlignment="Top" Width="303" Height="139" Click="button_Click"/>
        <Button x:Name="button1" Content="音量を30にする。" HorizontalAlignment="Left" Margin="217,216,0,0" VerticalAlignment="Top" Width="303" Height="162" Click="button1_Click"/>

    </Grid>
</Window>

```

## MainWindow.xaml.cs

```MainWindow.xaml.cs
using NAudio.Wave;
using System;
using System.Collections.Generic;
using System.Windows;
using NAudio.CoreAudioApi;

namespace WpfApp1
{
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void button_Click(object sender, RoutedEventArgs e)
        {
            VolumeController vc = new VolumeController();
            vc.SetVolume(100);
            MessageBox.Show("音量を100に変更しました。");
        }

        private void button1_Click(object sender, RoutedEventArgs e)
        {
            VolumeController vc = new VolumeController();
            vc.SetVolume(30);
            MessageBox.Show("音量を30に変更しました。");
        }
    }

    class VolumeController
    {
        public void SetVolume(int value)
        {
            //音量を変更
            MMDevice device;
            MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();
            device = DevEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);
            device.AudioEndpointVolume.MasterVolumeLevelScalar = ((float)value / 100.0f);
        }
    }
}
```

# Release 版での起動について

Release ビルドで正常に実行ファイルが作成さるのですが、実行するには開発中にインストールしたプラグインなどが一緒に入っているフォルダ内に実行ファイルを入れて、起動する必要が有ります。

（NAudio に関連するプラグインなどを入れて開発したので、それらと一緒にする必要が有ります。）

```cmd
実行フォルダ
  ├─ ★★音量変更C#アプリ★★.exe
  ├─ Microsoft.Win32.Registry.dll
  ├─ Microsoft.Win32.Registry.xml
  ├─ NAudio.Asio.dll
  ├─ NAudio.Core.dll
  ├─ NAudio.dll
  ├─ NAudio.Midi.dll
  ├─ NAudio.Wasapi.dll
  ├─ NAudio.WinForms.dll
  ├─ NAudio.WinMM.dll
  ├─ NAudio.xml
  ├─ System.Security.AccessControl.dll
  ├─ System.Security.AccessControl.xml
  ├─ System.Security.Principal.Windows.dll
  ├─ System.Security.Principal.Windows.xml
  ├─ WpfApp1.exe.config
  └─ WpfApp1.pdb
```

# 終わりに

少しづつですが、自分専用の Windows10 環境簡単変更アプリ化計画に一歩前進しました。

これからも少しずつ前進したいと思います。