Я использую NAudio и библиотеку AudioSwitcher в своем программном обеспечении.Я хочу изменить громкость для одного аудиоустройства, как показано на следующем рисунке:
К сожалению, я не могу найти описание, как получить доступ кконтроль объема в этом микшере с одним из 2-х библиотек.
Есть ли где-нибудь документация для библиотеки или у меня есть пример для меня?
Пока мне удалось получить доступ только к этому регулятору громкости, но это не то же самое, что и выше
Для настроекчто мне удалось работать я использую:
IEnumerable<CoreAudioDevice> DeviceList = m_Controller.GetPlaybackDevices();
foreach (CoreAudioDevice PlaybackDevice in DeviceList)
{
if (PlaybackDevice != null)
{
if (PlaybackDevice.State == AudioSwitcher.AudioApi.DeviceState.Disabled)
continue;
string strTmp = PlaybackDevice.FullName.ToUpper();
if (PlaybackDevice.FullName.Contains("xxxxx"))
{
m_PlaybackDevice = PlaybackDevice;
m_PlaybackDevice.SetAsDefault();
m_PlaybackDevice.SetAsDefaultCommunications();
PlaybackDevice.SetVolumeAsync(100);
}
}
}
Но это не настройка громкости с первого изображения
Обновление 1:
Iпопробовал ссылку с примером nAudio
try
{
NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
NAudio.CoreAudioApi.MMDeviceCollection DevCol = MMDE.EnumerateAudioEndPoints(NAudio.CoreAudioApi.DataFlow.All, NAudio.CoreAudioApi.DeviceState.All);
foreach (NAudio.CoreAudioApi.MMDevice dev in DevCol)
{
try
{
System.Diagnostics.Debug.Print(dev.FriendlyName);
//dev.AudioEndpointVolume.Mute = true;
}
catch (Exception ex)
{
//Do something with exception when an audio endpoint could not be muted
}
}
}
catch (Exception ex)
{
//When something happend that prevent us to iterate through the devices
}
Но это дает мне только список аппаратных устройств, а не список приложений из моей первой картинки.Мне нужен список приложений.например, при запуске firefox я мог бы изменить громкость приложения firefox на этой панели звукового микшера.
Update 2
NAudio.CoreAudioApi.MMDeviceEnumerator MMDE = new NAudio.CoreAudioApi.MMDeviceEnumerator();
выдает иногда, но не всегда исключение:
Blockquote System.InvalidCastException: Das Objekt des Typs "System .__ ComObject" Канн Нихт в Typ NAudio.CoreAudioApi.Interfaces.MMDeviceEnumeratorComObject "umgewandelt werden.ee.Edio.Pedio.Udio.Pudio.Udio.Uume.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.uume.udio.udio.uume.udio.udio.ee.edio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.udio.uume.udio.udio.uume.udio.udio.jc)ctor ()
Иногда это работает, но в большинстве случаев я получаю это исключение приведения