начиная с Windows Vista, функция waveOutSetVolume (winmm.dll) больше не работает на главном томе ОС, но для каждого приложения в отдельности. По умолчанию он установлен на 100%, что означает, что приложение воспроизводит звук с той же громкостью, что и ОС.
Теперь я хочу использовать именно этот эффект: изменение громкости только для моего текущего приложения без изменения громкости ОС.
Я попробовал приложение, предоставленное в http://www.geekpedia.com/tutorial176_Get-and-set-the-wave-sound-volume.html. Я добавил элемент управления WindowsMediaPlayer и загрузил в него поток Webradio, используя свойство URL (для автоматического запуска установлено значение true). На первый взгляд код не соответствует тому, что должен: когда я прокручиваю ползунок, радио продолжает воспроизводиться с той же громкостью, даже если я установлю на 0, что равняется приглушению звука. Я отладил и понял, что все в порядке, waveOutSetVolume возвращает 0. Это должно быть хорошо, или я ошибаюсь?
Я открыл консоль микшера, предоставленную Windows 7. Там я увидел следующее: Ползунок соответствующего приложения в представлении микшера изменяется (как и должно быть), когда я прокручиваю ползунок в образце. Тем не менее, объем не меняется. Но если я уменьшу громкость приложения в консоли микшера (вручную с помощью мыши), веб-радио будет воспроизводиться более низким голосом (как и должно быть). Похоже, что в моем коде отсутствует какой-либо вызов «Отправить», чтобы заставить ОС соответствующим образом настроить громкость приложения.
Есть идеи? Спасибо, Дэвид