|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Микшеры громкости для приложений в 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; Естественно это не весь код, если будет требоваться выложу остальной |