Utilisez le mélangeur de volume Windows pour contrôler le volume d'application
]Les niveaux de volume d'applications peuvent être facilement accessibles et fonctionner via la bibliothèque audio Windows Core, en particulier sur les systèmes d'exploitation Windows 7 et ultérieurs.
Exemple de code:
]L'extrait de code d'application C # console suivant montre comment contrôler le volume de l'application via l'interface de mélange de volume:
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
namespace SetAppVolume
{
class Program
{
static void Main(string[] args)
{
const string app = "Mozilla Firefox";
foreach (string name in EnumerateApplications())
{
Console.WriteLine($"应用名称: {name}");
if (name == app)
{
// 显示静音状态和音量级别(相对于主音量百分比)
Console.WriteLine($"静音状态: {GetApplicationMute(app)}");
Console.WriteLine($"音量级别: {GetApplicationVolume(app)}");
// 静音该应用程序
SetApplicationMute(app, true);
// 将音量设置为主音量的一半(50%)
SetApplicationVolume(app, 50);
}
}
}
// 获取应用程序音量
public static float? GetApplicationVolume(string name)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null) return null;
float level;
volume.GetMasterVolume(out level);
return level * 100;
}
// 获取应用程序静音状态
public static bool? GetApplicationMute(string name)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null) return null;
bool mute;
volume.GetMute(out mute);
return mute;
}
// 设置应用程序音量
public static void SetApplicationVolume(string name, float level)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null) return;
Guid guid = Guid.Empty;
volume.SetMasterVolume(level / 100, ref guid);
}
// 设置应用程序静音状态
public static void SetApplicationMute(string name, bool mute)
{
ISimpleAudioVolume volume = GetVolumeObject(name);
if (volume == null) return;
Guid guid = Guid.Empty;
volume.SetMute(mute, ref guid);
}
// 枚举应用程序
public static IEnumerable EnumerateApplications()
{
// 获取扬声器(第一个渲染 多媒体)设备
IMMDeviceEnumerator deviceEnumerator = (IMMDeviceEnumerator)(new MMDeviceEnumerator());
IMMDevice speakers;
deviceEnumerator.GetDefaultAudioEndpoint(EDataFlow.eRender, ERole.eMultimedia, out speakers);
// 激活会话管理器。我们需要枚举器
Guid IID_IAudioSessionManager2 = typeof(IAudioSessionManager2).GUID;
object o;
speakers.Activate(ref IID_IAudioSessionManager2, 0, IntPtr.Zero, out o);
IAudioSessionManager2 mgr = (IAudioSessionManager2)o;
// 枚举此设备上的会话
IAudioSessionEnumerator sessionEnumerator;
mgr.GetSessionEnumerator(out sessionEnumerator);
int count;
sessionEnumerator.GetCount(out count);
for (int i = 0; i
Notez que ce code nécessite d'ajouter une référence à mmdeviceAPI
. L'interface COM est utilisée dans le code, et les exceptions correspondantes doivent être gérées et s'assurer que l'objet COM est correctement libéré pour éviter la fuite des ressources. De plus, Mozilla Firefox
doit être remplacé par le nom de l'application que vous souhaitez contrôler. Ce code est pour référence uniquement et peut devoir être ajusté en fonction de circonstances spécifiques dans les applications réelles.
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3