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.
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:

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

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