Windows 볼륨 믹서를 사용하여 응용 프로그램 볼륨을 제어합니다
]Applications의 볼륨 레벨은 Windows Core Audio 라이브러리, 특히 Windows 7 및 이후 운영 체제에서 쉽게 액세스하고 작동 할 수 있습니다.
코드 예 :
]다음 C# 콘솔 애플리케이션 코드 스 니펫은 볼륨 믹서 인터페이스를 통해 응용 프로그램 볼륨을 제어하는 방법을 보여줍니다 :
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
이 코드는 mmdeviceapi
에 대한 참조를 추가해야합니다. COM 인터페이스는 코드에 사용되며 해당 예외를 처리해야하며 리소스 누출을 피하기 위해 COM 객체가 올바르게 릴리스되도록해야합니다. 또한 Mozilla Firefox
는 제어하려는 응용 프로그램의 이름으로 대체해야합니다. 이 코드는 참조 전용이며 실제 응용 프로그램의 특정 상황에 따라 조정해야 할 수도 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3