Как я могу программно изменить аудиоустройство по умолчанию в системе Vista/Win 7? Используя С# или вызов Win API?
C# Как программно изменить устройство воспроизведения
comment
Это в основном дубликат stackoverflow.com/questions/1334076/ кроме устройств ввода и вывода, в любом случае для него нет API в Vista+, если только вы не хотите декомпилировать медиацентр и найти недокументированный материал
- person Anders   schedule 05.01.2011
Ответы (1)
WinMM API должен предоставлять запрашиваемую вами функциональность.
Вы должны использовать сообщение DRVM_MAPPER_PREFERRED_SET, которое отправляется функцией waveOutMessage().
Документация: http://msdn.microsoft.com/en-us/library/aa909789.aspx
Тем не менее, если вы пытаетесь отправить сигнал самостоятельно, вам следует обратиться к библиотеке WinMM.Net.
person
John Gietzen
schedule
12.10.2009
Все, что мне нужно сделать, это изменить звуковое устройство в Windows, чтобы весь звук проходил через это устройство. По сути, в моей системе много звуковых устройств, и я хочу заменить приложение системного трея по умолчанию, чтобы мне не нужно было щелкать правой кнопкой мыши и открывать диспетчер устройств каждый раз, когда мне нужно переключить устройство. Будет ли этот API делать это?
- person JL.; 12.10.2009
Да, вы можете установить устройство воспроизведения звука по умолчанию в XP с помощью сообщения DRVM_MAPPER_PREFERRED_SET, которое отправляется с помощью waveOutMessage(). Это не работает в Висте. Я исследую.
- person John Gietzen; 12.10.2009
Спасибо, я думаю, что эта последняя ссылка будет работать, она должна быть портирована на win 7, надеюсь!
- person JL.; 12.10.2009
Нравится последняя ссылка! В Win7 мне приходилось запускать диалоговое окно «Устройства воспроизведения» каждый раз, когда я хочу переключиться с наушников на динамики и наоборот. Сейчас гораздо проще. Спасибо!
- person Ecyrb; 05.01.2010
@Ecyrb, как именно ты это сделал? WinMM.net, похоже, не имеет функции waveOutMessage. На самом деле импорт нативной библиотеки для waveOutMessage окружен директивой препроцессора #if false.
- person Alexander; 15.04.2011
Джонатан Сэмпсон удалил ссылку на vistaaudiochanger.com, поскольку она неактивна. Это отстой. Я не играл с WinMM.net.
- person Ecyrb; 16.04.2011
На самом деле
DRVM_MAPPER_PREFERRED_SET
не работает даже на XP, net-pro.aspx" rel="nofollow noreferrer">возвращает MMSYSERR_INVALPARAM
. И в документации, на которую вы ссылаетесь, четко указано, что она предназначена для Windows Mobile.
- person user; 23.02.2016