在 Windows 7 中交换麦克风和扬声器的更快方法?

在 Windows 7 中交换麦克风和扬声器的更快方法?

我有一副带内置麦克风的耳机和一组带 Blue Yeti 麦克风的扬声器,全部连接到 Windows 7 PC。

我希望能够在耳机麦克风/扬声器和 Yeti 麦克风和扬声器之间切换,而无需进入声音选项并手动切换默认音频设备和默认通信设备。

我搜索过可以实现此功能的软件,但没有找到适用于麦克风/录音设备的任何结果。是否有可以实现此功能的软件,还是我必须自己编写一个?

答案1

尼科姆设置默认声音设备命令应该可以帮助你:

nircmd setdefaultsounddevice [设备名称] {角色}

在 Windows 7/Vista/2008 上设置默认声音设备。[设备名称]是设备的名称,因为它出现在 Windows 的声音设备列表中,例如:扬声器、线路输入、麦克风等等……

{角色}参数是可选的,可以包含下列值之一:0对于控制台(默认值),1多媒体2用于通讯。

例子:

设置默认声音设备“线路输入”
设置默认声音设备“麦克风” 2

您可以轻松手动创建快捷方式,也可以使用cmd快捷方式或者cmd快捷键

AutoHotkey 论坛主题还包含您可能会觉得有用的脚本。

最后,设置声音设备是一个已编译的 AutoIt 脚本,可帮助您完成同样的事情:

SSD 可让您通过命令行更改 Win7 的默认声音设备(可能也适用于 Vista,但尚未测试)。要从命令行调用 SSD,语法是“SSD.exe #”(其中 # 是从列表中选择的声音设备的编号,“选择默认”下拉框必须启用才能使设备可选)。

1

答案2

使用 AutoIt 并编译您自己的 .EXE 来自动执行交换过程。
将快捷方式绑定到该 .EXE 可获得更便捷的操作。

该脚本的操作与您手动切换设备时的操作完全相同,只是使用键盘而不是鼠标。

如何使用

  1. 下载并解压AutoIt 自解压档案
  2. 将此代码复制并粘贴到新的文本文件中

    Run("c:\windows\system32\control.exe mmsys.cpl")
    WinWaitActive("Sound")
    WinSetOnTop ("Sound","Sound", 1 )
    
    ;Toggle between sound device 1 and 2
    send("{DOWN}")
    if ControlCommand("Sound", "", 1002, 'IsEnabled') Then
        ControlClick("Sound", "Set Default", 1002)
        $message = "Headset 1"
    else
        send("{DOWN}")
        ControlClick("Sound", "Set Default", 1002)
        $message = "Headset 2"
    EndIf
    
    ;Toggle between microphone device 1 and 2
    Send("{TAB 5}")
    Send("{RIGHT}")
    send("{DOWN}")
    if ControlCommand("Sound", "", 1002, 'IsEnabled') Then
        ControlClick("Sound", "Set Default", 1002)
    else
        send("{DOWN}")
        ControlClick("Sound", "Set Default", 1002)   
    EndIf
    
    WinClose("Sound")
    TrayTip("", $message, 5)
    Sleep(2000)
    
  3. 另存为deviceswapper.au3
  4. 打开AutoIt\install\Aut2Exe\Aut2exe.exe并将 .AU3 文件转换为 .EXE
  5. 创建该 .EXE 的快捷方式并设置合适的快捷键

笔记: 在本地化的 Windows 版本(德语、西班牙语、法语等)上,
您必须替换字符串默认设置使用本地化的按钮文本。

这里您可以阅读有关所有使用的命令的更多信息。

答案3

这是我最终做的事情,从上述每个答案中取出组件,并将其合并到 AutoHotKey 脚本中。我将 nircmd 放入 C:\bin(实际上,系统路径中的任何位置都可以),但其余部分应该很容易理解。

; This sets it to desktop speakers, so that the toggle works correctly
; without having to detect the setting from system
Run C:\bin\nircmd.exe setdefaultsounddevice "Desktop" 0
Run C:\bin\nircmd.exe setdefaultsounddevice "Desktop" 2
Run C:\bin\nircmd.exe setdefaultsounddevice "Desktop Mic" 0
Run C:\bin\nircmd.exe setdefaultsounddevice "Desktop Mic" 2

DesktopSpeakersActive = 1

; Change this to change which key this is bound to
Pause::
if DesktopSpeakersActive = 0
{
Run C:\bin\nircmd.exe setdefaultsounddevice "Desktop" 0
Run C:\bin\nircmd.exe setdefaultsounddevice "Desktop" 2
Run C:\bin\nircmd.exe setdefaultsounddevice "Desktop Mic" 0
Run C:\bin\nircmd.exe setdefaultsounddevice "Desktop Mic" 2
DesktopSpeakersActive = 1
TrayTip, , Desktop Speakers
}
else
{
Run C:\bin\nircmd.exe setdefaultsounddevice "Headset" 0
Run C:\bin\nircmd.exe setdefaultsounddevice "Headset" 2
Run C:\bin\nircmd.exe setdefaultsounddevice "Headset Mic" 0
Run C:\bin\nircmd.exe setdefaultsounddevice "Headset Mic" 2
DesktopSpeakersActive = 0
TrayTip, , Headset Speakers
}
return

相关内容