答案1
下面的脚本没有经过测试,当然也不在您的环境中,但它可能会有所帮助。
我在这里使用三种工具:
- 非常有用NirSoft 的 NirCmd。
- 这音频端点控制器 可以从互联网档案馆下载 这里(该工具位于子文件夹“Release”中)。我将其简称为 AEPC。
- 自动热键。
首先下载工具并将其解压到各自的文件夹中。
然后在连接所有三个设备的情况下运行不带参数的 AEPC,它会列出它们的名称。记下名称,或者至少记下名称内的识别子字符串。此时我不知道它会将“扬声器/耳机”列为一个还是两个设备。如果是一个设备,那么我假设耳机自动优先,脚本需要缩短。我的脚本假设有三个设备,但在您运行 AEPC 之前,它们的名称只是一个猜测。
安装 AutoHotKey 后,将以下文本放入文件中.ahk
并双击进行测试。您可以通过右键单击托盘栏中的绿色 H 图标并选择退出来停止脚本。要让它在登录时运行,请将其放在 的启动组中
C:\Users\USER-NAME\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
。
检查并更换以下琴弦 findstr 命令:
#Persistent ; prevents the script from exiting when it reaches 'return'
SetTimer, detectDevices, 1000 ; check every second
return
detectDevices: ; this is the timer routine
RunWait, %ComSpec% /c "C:\Temp\AudioEndPointController\Release\EndPointController.exe" | findstr Headphone
if (%ErrorLevel% = 0) { ; found headphone
Run, "C:\Program Files\Nirsoft Package\NirSoft\x64\nircmd.exe" setdefaultsounddevice Headphones
} else {
RunWait, %ComSpec% /c "C:\Temp\AudioEndPointController\Release\EndPointController.exe" | findstr Monitor-device
if (%ErrorLevel% = 0) { ; found monitor device
Run, "C:\Program Files\Nirsoft Package\NirSoft\x64\nircmd.exe" setdefaultsounddevice Monitor-name
} else { ; only speaker is left
Run, "C:\Program Files\Nirsoft Package\NirSoft\x64\nircmd.exe" setdefaultsounddevice Speaker
}
}
Return ; end of timer routine
答案2
这可以通过使用 Windows 内置任务调度程序来实现。每次 PC 硬件层面发生某些变化时,它都会在 Windows 日志中触发一个事件。任务调度程序已经监听了此日志,因此如果您只是查找另一个事件,则不会注意到性能差异。我发现此论坛条目描述了类似的问题,并且美国挪威很好地解释了如何解决这个问题。使用此解决方案,您可以创建一个任务,当您插入显示器时触发,然后启动更改音频设备的脚本。如果没有深入研究,我没有找到使用 cmd 或 powershell 执行此操作的方法,但我认为如果您花更多时间,您可以找到一些东西。我唯一找到的是这个帖子在 StackOverFlow 上,提出了几种解决方案,其中一些使用了 AutoHotKey,一种非常简单的脚本语言。
我希望这会有所帮助,也许我将来会发现更多,这也是我遇到的一个问题,然后我会更新我的答案。
答案3
就我个人而言,我的直觉告诉我,如果您只选择软件路线,您可能会永远为此挣扎。
我认为可以实现自动配置输出设备的软件,但我认为没有任何一款软件可以满足您的需求,而且如果您使用软件解决方案,我认为您将浪费大量时间来设置和维护它。我认为您应该尝试更可靠且更易于配置的硬件解决方案。以下是一些选项:
几乎所有的屏幕都有一个输入音频插孔;许多屏幕也有一个输出音频插孔。如果您的显示器有输出插孔,我建议您将屏幕设置为默认音频,并将耳机插入屏幕的输出音频。因此,当您插入耳机时,您会听到耳机的声音,拔下耳机,您会听到屏幕的声音,拔下屏幕,您会听到笔记本电脑的声音。(检查屏幕设置,您可能可以选择在插入外部设备时屏幕扬声器是否仍播放)
类似选项,但要准备一根音频延长线,将笔记本电脑设置为默认设置,然后将笔记本电脑的延长线插入屏幕输入插孔。当您想要使用耳机时,只需从笔记本电脑上拔下延长线并插入耳机即可。
我推荐的第二个选项是购买音频开关或外部声卡。您觉得音质对您来说可能很重要吗?如果是这样,您可能希望在某个时候购买一块好的声卡来提高音质。现在就做,同时解决两个问题。您只需要至少 2 个输出,并有一个手动开关来选择要选择的输出。有很多选择,或者音频开关要便宜得多,但仅此而已 - 一个带有一些手动开关和按钮的硬件。
希望我能提供更多帮助,但我在我的电脑上做了一些测试,发现问题是一样的——当你插入/拔出东西时尝试自动完全改变输出很麻烦。如果是我,我知道我会选择硬件路线——可能在视觉上不太美观,但我认为这是你最可靠的选择。