Как получить доступ к микшер громкости Windows с C #? - PullRequest
0 голосов
/ 04 февраля 2019

Я использую NAudio и библиотеку AudioSwitcher в своем программном обеспечении.Я хочу изменить громкость для одного аудиоустройства, как показано на следующем рисунке:

enter image description here

К сожалению, я не могу найти описание, как получить доступ кконтроль объема в этом микшере с одним из 2-х библиотек.

Есть ли где-нибудь документация для библиотеки или у меня есть пример для меня?

Пока мне удалось получить доступ только к этому регулятору громкости, но это не то же самое, что и выше

enter image description here

Для настроекчто мне удалось работать я использую:

           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 ()

Иногда это работает, но в большинстве случаев я получаю это исключение приведения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...