Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Мультимедиа
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 30.11.2017, 16:24
DrDobro DrDobro вне форума
Прохожий
 
Регистрация: 30.11.2017
Сообщения: 1
Версия Delphi: Delphi xe2
Репутация: 10
По умолчанию Микшеры громкости для приложений в Windows 10

Приветствую всех, увидивших мой вопрос!

У меня возникла следующая проблема, и честно говоря я даже не знаю как это в поиске вбить. Перейду к сути.
Есть Windows7 и Windows10. В этих ОС есть микшер управлением громкостью звука. В отличие от Windows XP помимо регулировки общей громкости есть возможность регулировать громкость звука для отдельного приложения.
К примеру, данный момент на Win7 я вижу следующую картину, левый микшер у меня под надписью устройство, в качестве устройства указано "Динамики", и он выкручен на 70%. Правее идут еще три микшера, под общей надписью "Приложения". Соответственно эти микшеры называются "Системные звуки", "Viber", "Google chrome". Путем не долгих эксперементов написал простенькую прогу, в которой одна кнопка и на ее нажатие общая громкость (первый микшер), становится равной 10%.
А теперь проблема.
Подскажите куда копать, как искать, что искать, или может вы сталкивались с тем, что нужно получить доступ к оставшимся трем микшерам. Нужно программно изменить уровень громкости, к примеру, для уровня громкости "Viber". Как получить список этих трех приложений, который в данный момент используют аудио девайс "Динамики"?



Ниже пример как устанавливаю общую громкость. Оформление кода в таком виде так, как в данный момент пытаюсь найти пути решения. Поэтому получаю все девайсы, а не текущий, но точно знаю что мой активный девайс идет первым - тот что "динамики".
Код:
procedure TForm1.FormCreate(Sender: TObject);
var
  AudioEndpoints: IMMDeviceEnumerator;
  defaultDevice: IMMDevice;
  vCollection:IMMDeviceCollection;
begin
 CoCreateInstance(CLSID_MMDeviceEnumerator, nil, CLSCTX_INPROC_SERVER, IID_IMMDeviceEnumerator, 

AudioEndpoints);
 AudioEndpoints.EnumAudioEndpoints(eAll, DEVICE_STATE_ACTIVE, vCollection);
 vCollection.Item(0, defaultDevice);
 defaultDevice.Activate(IID_IAudioEndpointVolume, CLSCTX_INPROC_SERVER, nil, endpointVolume);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if endpointVolume = nil then Exit;
  VolumeLevel := 0.10;
  VolumeLevel1 :=0.10;
  endpointVolume.SetMasterVolumeLevelScalar(VolumeLevel, nil);
end;

Естественно это не весь код, если будет требоваться выложу остальной
Ответить с цитированием
  #2  
Старый 01.12.2017, 03:03
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Наверное, надо копать в эту сторону: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter