33

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

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

7 ответов7

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 решила, что программисты должны делать, поэтому я делаю этот скрипт для автоматизации процесса. Это не лучший вариант, так как он всплывает в окне, чтобы сменить устройство (обязательно), но позволяет создавать ярлыки для изменения устройства вывода для вашего звука.

9

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

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

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

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

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 как он используется:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .