Подскажите, пожалуйста, программно прочитать/изменить общую громкость звука в системе
Те примеры что я нашел работают только до ХР включительно. На Vista+ идут лесом.
собственно нужно немного:
— прочитать уровень
— изменить уровень
— mute on/off
— прочитать режим mute включено или выключено
Неплохо бы примерчик (рабочий ес-но на Windows 7-10)
Нужно на Delphi но и на C++ подойдет. Портировать несложно.
Что-то с налету здесь не нашел ничего толкового.
Подскажите куда смотреть, если обсуждалось уже
Здравствуйте, VTT, Вы писали:
VTT>EndpointVolume API
Я уже вокруг него хожу долго...
как получить объект интерфейса IMMDevice?
И какие значения констант (например IID_IAudioClient и IID_ISimpleAudioVolume) ?
где их взять?
Здравствуйте, drpops, Вы писали:
D>Здравствуйте, VTT, Вы писали:
VTT>>EndpointVolume API D>Я уже вокруг него хожу долго... D>как получить объект интерфейса IMMDevice? D>И какие значения констант (например IID_IAudioClient и IID_ISimpleAudioVolume) ? D>где их взять?
Вам скорее нужен интерфейс IAudioEndpointVolume,
который можно получить вызвав метод Activate интерфейса IMMDevice,
который можно получить вызвав метод GetDefaultAudioEndpoint интерфейса IMMDeviceEnumerator,
который можно получить вызвав метод CoCreateInstance.
Значения констант можно поискать рядом с объявлением нужного интерфейса в соответствующем заголовочном файле.
Нужные заголовочные файлы обычно указываются на MSDN внизу страниц, в разделе Requirements.
Говорить дальше не было нужды. Как и все космонавты, капитан Нортон не испытывал особого доверия к явлениям, внешне слишком заманчивым.
Здравствуйте, drpops, Вы писали:
D>Здравствуйте, VTT, Вы писали:
VTT>>EndpointVolume API D>Я уже вокруг него хожу долго... D>как получить объект интерфейса IMMDevice?
Если не знаешь как, то пора озаботиться изучением модели COM и как его готовить с direct sound. Также рекомендую почитать что такое atl и как его использовать с COM.
Здравствуйте, VTT, Вы писали:
VTT>Здравствуйте, drpops, Вы писали:
D>>Здравствуйте, VTT, Вы писали:
VTT>Вам скорее нужен интерфейс IAudioEndpointVolume, VTT>который можно получить вызвав метод Activate интерфейса IMMDevice, VTT>который можно получить вызвав метод GetDefaultAudioEndpoint интерфейса IMMDeviceEnumerator, VTT>который можно получить вызвав метод CoCreateInstance. VTT>Значения констант можно поискать рядом с объявлением нужного интерфейса в соответствующем заголовочном файле. VTT>Нужные заголовочные файлы обычно указываются на MSDN внизу страниц, в разделе Requirements.
кстати в процессе поисков набрел на совершенно простой код. Может кому сгодится
Главное — работает.
Повысить громкость
понизить громкость
вкл-выкл Mute
значения считать нельзя, просто имитация клавиш громкости
Здравствуйте, drpops, Вы писали:
D>Здравствуйте, VTT, Вы писали:
VTT>>Здравствуйте, drpops, Вы писали:
D>>>Здравствуйте, VTT, Вы писали:
VTT>>Вам скорее нужен интерфейс IAudioEndpointVolume, VTT>>который можно получить вызвав метод Activate интерфейса IMMDevice, VTT>>который можно получить вызвав метод GetDefaultAudioEndpoint интерфейса IMMDeviceEnumerator, VTT>>который можно получить вызвав метод CoCreateInstance. VTT>>Значения констант можно поискать рядом с объявлением нужного интерфейса в соответствующем заголовочном файле. VTT>>Нужные заголовочные файлы обычно указываются на MSDN внизу страниц, в разделе Requirements.
D>Спасибо большое. Даже нашел портирование на делфи вот тут http://www.cyberforum.ru/delphi/thread430568.html D>(если кому интересно, конечно) пока ковыряюсь, только сейчас руки дошли...
Все, разобрался, сделал рабочий код. Но есть интересные приколы...
Винду точно индусы писали
Ну или документацию