動機
今回はボタン一つで、ノートパソコンに接続しているオーディオ機器の情報を取得してみました。
ちなみに、今回も作成に関しては WpfApp で作成をしました。
参考 1:ノートパソコンの画面の明るさをボタン一つで変更する【C#】
参考 2:ノートパソコンの画面の音量をボタン一つで変更する【C#】
参考 3:ノートパソコンの画面のバッテリー状況をボタン一つで取得する【C#】
参考 4:ノートパソコンの画面の通信料状況をボタン一つで取得する【C#】
参考 5:ノートパソコンで現在使用中のアプリをボタン一つで把握する【C#】
イメージ画像
ボタンを設置した UI です。(プロトのため、もはや UI をきれいにしようとは思わなくなっています。。。すみません。。)
こちらを選択すると現在使用中のオーディオ機器の情報が表示されるようになります。
ソース
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="Button" HorizontalAlignment="Left" Margin="119,91,0,0" VerticalAlignment="Top" Width="75" Click="button_Click"/>
</Grid>
</Window>
MainWindow.xaml
using NAudio.Wave;
using System.Collections.Generic;
using System.Windows;
namespace WpfApp1
{
/// <summary>
/// MainWindow.xaml の相互作用ロジック
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void button_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(GetDevices());
}
public string GetDevices()
{
string items = "";
List<string> deviceList = new List<string>();
for (int i = 0; i < WaveOut.DeviceCount; i++)
{
var capabilities = WaveOut.GetCapabilities(i);
deviceList.Add(capabilities.ProductName);
}
foreach(string item in deviceList)
{
items += item;
}
return items;
}
public void PlaySound(string filePath, int index)
{
var waveReader = new WaveFileReader(filePath);
var waveOut = new WaveOut();
waveOut.DeviceNumber = index;
waveOut.Init(waveReader);
waveOut.Play();
}
}
}
Release 版での起動について
Release ビルドで正常に実行ファイルは作成されるのですが、実行するには開発中にインストールしたプラグインなどが一緒に入っているフォルダ内に実行ファイルを入れて、起動する必要が有ります。
(NAudioo に関連するプラグインなどを入れて開発したので、それらと一緒にする必要が有ります。)
実行フォルダ
├─ ★★オーディオ機器情報取得.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 便利化計画へは参画しなさそうですが、もしかしたら今後使用るかもしれないということで、一応調査してプロトタイプ作成をしてみました。
誰かのお役に立てればと思います。