MRが楽しい

MRやVRについて学習したことを書き残す

PCのシステムボリュームの情報を参照可能なC#アプリケーションを作成する

本日は .NET Framework の小ネタ枠です。
PCのシステムボリュームの情報を参照可能なC#アプリケーションを作成する手順を記事にします。

前提条件

本記事では .NET Framework 上で動作するオーディオライブラリ「NAudio」を利用します。
以下の記事を参考に「NAudio」のビルドを実行してください。
bluebirdofoz.hatenablog.com

プロジェクトの作成

VisualStudio を起動して新規プロジェクトを作成します。
f:id:bluebirdofoz:20211204234219j:plain

今回は C# のコンソールアプリケーションを選択しました。
f:id:bluebirdofoz:20211204234243j:plain

NAudioへの参照

プロジェクトが作成されたら NAudio を利用するための参照をプロジェクトに追加します。
[依存関係]を右クリックして[プロジェクト参照の追加]を開きます。
f:id:bluebirdofoz:20211204234306j:plain

[参照マネージャー]のダイアログが開いたら[参照]ボタンから必要なDLLの参照を追加します。
ここでは以下の記事でビルドした NAudio プロジェクトで出力されたDLLへの参照を追加します。
bluebirdofoz.hatenablog.com

今回はシステムボリュームのコントロールを行うため、[NAudio.Core.dll]と[NAudio.Wasapi.dll]への参照を追加しました。
・NAudio\bin\Release\netstandard2.0
f:id:bluebirdofoz:20211204235236j:plain

これで NAudio への参照が追加されました。
f:id:bluebirdofoz:20211204235457j:plain

テストコード

テストコードを作成します。
以下の通り、NAudio のAPIを使って現在のシステムボリュームを取得するコードを追加しました。
・Program.cs

using System;

// NAudioへの参照
using NAudio.CoreAudioApi;

namespace SystemControlTest
{
    class Program
    {
        static void Main(string[] args)
        {
            // オーディオへのアクセス
            MMDevice device;
            MMDeviceEnumerator DevEnum = new MMDeviceEnumerator();
            device = DevEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);

            // 現在のシステムボリュームの音量を取得してコンソールに表示する
            Console.WriteLine("Volume Lever : " + device.AudioEndpointVolume.MasterVolumeLevelScalar.ToString());
        }
    }
}

f:id:bluebirdofoz:20211204234341j:plain

実行ボタンをクリックしてプログラムを実行してみます。
f:id:bluebirdofoz:20211204234351j:plain

以下の通り、システムボリュームの最大値を 1.0 とした場合の現在の音量を取得することができました。
f:id:bluebirdofoz:20211204234403j:plain

参考ページ

hisasann.github.io