Используйте микшер Windows Volume для управления томом приложения
]]Уровни приложений громкости можно легко получить через библиотеку Audio Core Windows, особенно в операционных системах 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