如何在Windows Vista / 7上管理多个音频播放设备?


33

我已经将扬声器(音频输入)和耳机(带有自己的声卡的USB耳机)连接到了台式计算机。在Windows 7下,我可以右键单击“ 音频混合器”,然后选择“ 播放设备”,然后在这些设备之间切换。

有没有更简单的方法(也许是键盘快捷键)可以更轻松地进行切换?我在一个共享的空间中工作,有时我想让耳机避免惹恼其他人,但有时扬声器是可以的。我希望能够快速切换。在理想的世界中,我的问题的解决方案也适用于Vista。

Answers:


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)

现在创建一个快捷方式,并在“目标”中放置已编译可执行文件的路径。对于参数,将声音设备的编号放在要切换到的列表中。(要切换到列表中的第一项,请输入1,列表中的第二项,请输入2,依此类推)。如果需要键盘快捷键,请使用快捷键的属性窗口中的“快捷键”字段。

我一直在寻找可以做您想做的事情的方法,发现没有编程方式可以在Vista / 7中切换音频设备。Microsoft并不是程序员决定要做的事情,因此我制作了此脚本来自动化该过程。这不是最好的方法,因为它会弹出窗口以更改设备(必要),但是它可以创建快捷方式来更改声音的输出设备。


2
这也许是我在整个网站上找不到的最有用的答案!再次感谢这个....
JL。

非常棒,效果很好。
WerkkreW

9

我认为,默认音频转换器是目前最好的解决方案。

它使用未公开的系统调用而不是模拟键盘按键,这意味着您可以在全屏应用程序中使用它而不必担心。


好主意,但不仅不起作用,而且插入
电源后

2
强烈推荐!比AutoIt脚本好10倍。确实是应该接受的答案。
Otiel 2012年

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)

很好,我喜欢切换
Chaulky 2011年

3

用谷歌搜索了一段时间,唯一对我有用的方法是来自AutoHotKey的脚本,我唯一希望做的就是在后台完成此操作。这是脚本:

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

您可以更改它以满足您的需求


这对我有用,但我必须使用SendInput {Down}代替ControlSend,SysListView321,{Down}。我还必须更改{Downs}的数量以匹配我的音频设备。
伊恩

3

fakt的解决方案就像一个魅力。这里有一个自动热键的小脚本,当您按下“ 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

另一个不错的程序是音频路由器。它是一个免费(GPL)程序,具有64位和32位OS版本。这是程序的GitHub链接:

音频路由器

这是使用方式的简单GIF:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.