C# System Lautstärke Abrufen C#-Tutorial

Systemlautstärke in C# abrufen [C#-Tutorial]

Dieser Artikel erklärt, wie man die aktuelle Systemlautstärke mit der Programmiersprache C# auf Windows-PCs abruft. Wir werden die Lautstärke von in Echtzeit abgespielten Sounds mit C# abrufen. Dieser Artikel ist wie eine C#-Einführung/Tutorial...

Shou Arisaka
3 Min. Lesezeit
30. Sept. 2025

Dieser Artikel erklärt, wie man die aktuelle Systemlautstärke mit der Programmiersprache C# auf Windows-PCs abruft.

Wir werden die Lautstärke von in Echtzeit abgespielten Sounds mit C# abrufen.

Ich habe zum ersten Mal seit etwa 3 Jahren mit C# gearbeitet. Es ist fast so, als würde ich C# zum ersten Mal machen, also wird dieser Artikel wie eine C#-Einführung/Tutorial sein. Wenn Sie nur über den Hauptinhalt zur Systemlautstärke Bescheid wissen möchten, können Sie gerne vorspringen.

Laden externer DLL-Module mit csc.exe

Um die aktuelle Systemlautstärke abzurufen, verwenden wir ein Modul namens NAudio.dll.

NAudio - CodePlex Archive

Wenn Sie versuchen zu kompilieren, ohne das DLL-Modul zu laden, erhalten Sie einen error CS0246-Fehler.

Wie lädt man eine DLL? Sie können den Pfad zur Datei mit der /r-Option in csc.exe angeben, und sie wird automatisch geladen.

C:\Users\Noob\csharp>csc test.cs /r:SnarlNetwork.dll

c# - Why am I getting error CS0246: The type or namespace name could not be found? - Stack Overflow

Sie können die Hilfe mit csc /help sehen, also lassen Sie uns überprüfen, was /r ist. Es heißt /reference:<file list> Metadaten aus den angegebenen Assembly-Dateien referenzieren.

PS C:\pg> csc.exe /help | sls "/r"

 /refout:<file>                Referenz-Assembly-Ausgabe generieren
 /recurse:<wildcard>           Platzhaltern im aktuellen Verzeichnis folgen und
 /reference:<alias>=<file>     Metadaten aus der angegebenen
                                Assembly-Datei mit dem angegebenen Alias referenzieren (Kurzform: /r)
 /reference:<file list>        Metadaten aus den angegebenen
                                Assembly-Dateien referenzieren (Kurzform: /r)
 /resource:<resinfo>           Die angegebene Ressource einbetten (Kurzform: /res)
 /refonly                      Referenz-Assembly anstelle der Hauptausgabe generieren
 /ruleset:<file>               Regelsatzdatei zum Deaktivieren spezifischer Diagnosen
 /reportanalyzer               Zusätzliche Analyzer-Informationen melden

Ich habe einige Trial-and-Error-Tests durchgeführt, also verwenden Sie es bitte als Referenz.

cp '/mnt/c/Program Files/BlueStacks/NAudio.dll' .

'/mnt/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/Roslyn/csc.exe' dev-cs.cs NAudio.dll  
# => Fehler

'/mnt/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/Roslyn/csc.exe' dev-cs.cs "C:/Program Files/BlueStacks/NAudio.dll"  
# => Fehler

'/mnt/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/Roslyn/csc.exe' dev-cs.cs /r:NAudio.dll
# => Erfolg

'/mnt/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/Roslyn/csc.exe' dev-cs.cs /r:./NAudio.dll  
# => Erfolg

'/mnt/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/Roslyn/csc.exe' dev-cs.cs /r:"C:/Program Files/BlueStacks/NAudio.dll"  
# => Erfolg

'/mnt/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/Roslyn/csc.exe' dev-cs.cs /r:"C:\Program Files\BlueStacks\NAudio.dll"  
# => Erfolg

Wie oben gezeigt, kann der Pfad entweder absolut oder relativ sein. Bevor ich die Hilfe überprüfte, dachte ich, das r in /r stehe für relative.

c# - Can I load a .NET assembly at runtime and instantiate a type knowing only the name? - Stack Overflow reflection - Loading DLLs at runtime in C# - Stack Overflow

Abrufen der aktuellen Systemlautstärke

Erstellen Sie eine Datei wie folgt und führen Sie sie mit einem Befehl aus.

'/mnt/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/Roslyn/csc.exe' dev-cs.cs /r:"C:\Program Files\BlueStacks\NAudio.dll" ; ./dev-cs.exe

dev-cs.cs

using NAudio.CoreAudioApi;
// using System.Console;
using System;

namespace Dev
{
  public static class Program
  {
    public static void Main(params string[] args)
    {
      // System.Console.WriteLine("Hello !!");

      MMDeviceEnumerator devEnum = new MMDeviceEnumerator();
      MMDevice defaultDevice = devEnum.GetDefaultAudioEndpoint(DataFlow.Render, Role.Multimedia);

      Console.WriteLine( "The realtime volume is " + defaultDevice.AudioMeterInformation.MasterPeakValue.ToString() );

    }
  }
}

audio - Get Master Sound Volume in c# - Stack Overflow

Sie erhalten eine Ausgabe wie die folgende:

Image

yuis ASUS /mnt/c/pg/cs$ '/mnt/c/Program Files (x86)/Microsoft Visual Studio/2017/Community/MSBuild/15.0/Bin/Roslyn/csc.exe' dev-cs.cs /r:"C:\Program Files\BlueStacks\NAudio.dll" ; ./dev-cs.exe
Microsoft (R) Visual C# Compiler Version 2.7.0.62715 (db02128e)
Copyright (C) Microsoft Corporation. All rights reserved.

The realtime volume is 0

Wenn Sie Musik abspielen oder so etwas, wird dieser Wert schwanken.

Fazit

Image

Es war relativ einfach zu implementieren. Ich konnte das in 2 Stunden Arbeit schaffen, also denke ich, dass es ziemlich reibungslos verlief. Wenn ich Zeit habe, würde ich gerne gelegentlich mit C# arbeiten, während ich awesome anschaue.

quozd/awesome-dotnet: A collection of awesome .NET libraries, tools, frameworks and software

Diesen Artikel teilen

Shou Arisaka 30. Sept. 2025

🔗 Links kopieren