Как управлять несколькими устройствами воспроизведения звука в Windows Vista / 7?

33

К моему настольному компьютеру подключены динамики (аудиовход) и наушники (USB-гарнитура с собственной звуковой картой). Под Windows 7 я могу щелкнуть правой кнопкой мыши Audio Mixer и выбрать Playback Devices и переключаться между этими устройствами.

Есть ли более простой способ, возможно, комбинация клавиш, которая облегчила бы переключение? Я работаю в общем пространстве, иногда мне хочется, чтобы наушники не раздражали других людей, но в других случаях ораторы в порядке. Я хочу иметь возможность быстро переключаться. В идеальном мире решение моего вопроса будет работать и в Vista.

Брайан Литтл
источник

Ответы:

19

Решение всех ваших проблем с автоматизацией Windows: AutoIt !

Поставь этот AutoIt и скомпилируй

;-----Configuration-----
;The title of the sound config window.
Dim $ConfigWindowTitle = "Sound"
;-----End of configuration----

Dim $ItemNumber = 1
If $CmdLine[0] >= 1 Then ;If we have a parameter...
    $ItemNumber = $CmdLine[1] ;...we should press the button the specified number of times.
EndIf

Run("control mmsys.cpl") ;Run the sound control applet and hide it.

WinWaitActive($ConfigWindowTitle) ;Wait for it to be active before sending keystrokes.

Send("{TAB}{TAB}{TAB}{TAB}") ;Put the focus on the list

For $i = 1 to $ItemNumber Step 1
    Send("{DOWN}")
Next

Send("!s") ;Press Alt + S to set the selected device as the default.
WinClose($ConfigWindowTitle)

Теперь создайте ярлык и в Target укажите путь к скомпилированному исполняемому файлу. В качестве аргумента укажите номер звукового устройства в списке, на который вы хотите переключиться. (чтобы перейти к верхнему элементу в списке, введите 1, второй элемент в списке, 2 и т. д.). Если вы хотите сочетание клавиш, используйте поле «Сочетание клавиш» в окне свойств ярлыка.

Я искал что-то, что могло бы сделать то, что вы хотели, и обнаружил, что в Vista / 7 нет программного способа переключения аудиоустройств. Это не то, что Microsoft решила, что программисты должны делать, поэтому я делаю этот скрипт для автоматизации процесса. Это не самый лучший вариант, так как он открывает окно для изменения устройства (обязательно), но позволяет создавать ярлыки для изменения устройства вывода для вашего звука.

Дэн Уокер
источник
2
Это, пожалуй, самый полезный ответ, который я пока не нашел на этом сайте! Еще раз спасибо за это ....
JL.
Очень круто, прекрасно работает.
WerkkreW
9

По умолчанию Audio Changer на данный момент является лучшим решением.

Он использует недокументированные системные вызовы вместо имитации нажатия клавиш, что означает, что вы можете без проблем использовать его в полноэкранных приложениях.

cptloop
источник
Отличная идея, но она не только не сработала, теперь моя гарнитура вообще не обнаруживается при подключении. :(
Nick Spreitzer
2
Настоятельно рекомендуется! В 10 раз лучше, чем скрипт AutoIt. Должен быть действительно принятый ответ.
Otiel
2
Установочные файлы находятся здесь: sourceforge.net/projects/defaultaudiocha/files Вау это, наверное, самое чистое решение для переключения устройств воспроизведения, которое я когда-либо видел !! +1
Geo
4

@Dan Walker Хорошее решение, но не идеальное;)

Этот скрипт использует наличие файла для фактического переключения, поэтому вы можете использовать тот же ярлык для переключения между воспроизводящими устройствами. Это просто редактирование:

;-----Configuration-----
;The title of the sound config window.
Dim $ConfigWindowTitle = "Sound"
;-----End of configuration----

Dim $ItemNumber = 1 ; The first itme in the audio list

If FileExists ("a") Then; Use the existence of a file to know if we should toggle
    FileDelete("a")
    $ItemNumber = 3 ; The audio playback device you want to toggle to
Else
    FileOpen("a", 1)
    FileClose("a")
EndIf

Run("control mmsys.cpl") ;Run the sound control applet and hide it.

WinWaitActive($ConfigWindowTitle) ;Wait for it to be active before sending keystrokes.

Send("{TAB}{TAB}{TAB}{TAB}") ;Put the focus on the list

For $i = 1 to $ItemNumber Step 1
    Send("{DOWN}")
Next

Send("!s") ;Press Alt + S to set the selected device as the default.
WinClose($ConfigWindowTitle)
Энди Рэй
источник
Хорошо, мне нравится переключение
Чолки
3

Погуглил это какое-то время, и единственное, что помогло мне, - это скрипт от AutoHotKey, единственное, что мне нужно, - это сделать это в фоновом режиме. Вот скрипт:

Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down}
ControlClick,&Set Default
ControlClick,OK

Вы можете изменить его, чтобы удовлетворить ваши потребности


источник
Это сработало для меня, но я должен был использовать SendInput {Down}вместо ControlSend,SysListView321,{Down}. Я также должен был изменить количество {Downs}, чтобы соответствовать моим аудиоустройствам.
Иэн
3

Решение факта работает как шарм. Вот небольшой скрипт для autohotkey, который выбирает первое аудиоустройство по умолчанию при нажатии «F4» и второе при нажатии «F3». Эта версия работает со всеми версиями Windows. Протестировано с использованием Win 7 64.

F3::
Run, mmsys.cpl
WinWaitActive,Sound
ControlSend,SysListView321,{Down}
ControlSend,SysListView321,{Down}
Sleep, 50
ControlClick,Button2
ControlClick,OK
return

F4::
Run, mmsys.cpl
WinWaitActive,Sound
ControlSend,SysListView321,{Down}
Sleep, 50
ControlClick,Button2
ControlClick,OK
return

источник
2

@cptloop Default Audio Changer был довольно хорош, но досадно, что после установки в качестве устройства по умолчанию устройство не будет установлено в качестве устройства связи по умолчанию.

Это привело меня к поиску Audio Switcher , который имеет несколько дополнительных функций:

  • Поддержка переключения записывающих устройств
  • Поддержка нескольких горячих клавиш
  • Двойной переключатель (замена устройства по умолчанию и устройства связи)
  • И больше!

Единственное, что мне не нравится, это то, что он не позволяет использовать одну горячую клавишу для переключения между двумя устройствами, каждое из которых должно быть настроено с помощью собственной горячей клавиши. Тем не менее, v2.0 находится в разработке и обещает некоторые улучшения функций, а также поддержку плагинов. Они также опубликовали базовый API, так что можно создать собственное индивидуальное решение.

Редактирование: Согласно xenolightning / AudioSwitcher_v1 # 607 , возможность переключать / переключать устройства уже реализована в v2.0.

Дейв Хьюз
источник
0

Еще одна хорошая программа для этого - Audio Router. Это бесплатная (GPL) программа с 64-битной и 32-битной версиями ОС. Вот ссылка программы GitHub:

Аудио маршрутизатор

Вот простой GIF как он используется:

введите описание изображения здесь

user2597747
источник