我将我的电脑(Windows 7)连接到了电视上,我经常在数字音频(S/PDIF)(高清晰度音频设备)和我的耳机(2-科赛尔CA-HS1 USB耳机)之间切换声音输出设备。
我想执行一个批处理/脚本文件来为我更改此设置,以便我不必“右键单击音量>播放设备>标记输出设备”并单击“设置默认值”。
我知道这是奢侈的问题,但也许我可以从别人那里学到一些东西呢?
非常感谢任何帮助!
我将我的电脑(Windows 7)连接到了电视上,我经常在数字音频(S/PDIF)(高清晰度音频设备)和我的耳机(2-科赛尔CA-HS1 USB耳机)之间切换声音输出设备。
我想执行一个批处理/脚本文件来为我更改此设置,以便我不必“右键单击音量>播放设备>标记输出设备”并单击“设置默认值”。
我知道这是奢侈的问题,但也许我可以从别人那里学到一些东西呢?
非常感谢任何帮助!
这是我如何将“Line 1”设置为播放设备的方法:
start /min "" G:\......\nircmd.exe setdefaultsounddevice "Line 1"
NirCmd是一个小型的命令行实用程序,可以下载使用,允许您执行一些有用的任务而不显示任何用户界面。
nircmd.exe setdefaultsounddevice“Headphones”
。 - Bill Hoag我有和你一模一样的需求,在看到你的帖子后,我找到了以下内容:
不幸的是,它不是Windows本地功能;它需要下载一个名为AutoHotKey的小型开源脚本工具,但它运行得很好,只需要少量内存(1〜2.5Mb)。 #+a::
Run, mmsys.cpl
WinWait,Sound
ControlSend,SysListView321,{Down 2}
ControlGet, selectedDevice, List, Focused, SysListView321
Loop, Parse, selectedDevice, %A_Tab%
if a_index <> 3
continue
else
{
if A_LoopField <> Default Device
{
ControlClick,&Set Default
ControlClick,OK
WinWaitClose
SoundPlay, *-1
return
}
else
{
ControlSend,SysListView321,{Down 2}
ControlClick,&Set Default
ControlClick,OK
WinWaitClose
SoundPlay, *-1
return
}
}
#File: TV.ps1
$name = "SMART*"
# list active audio playback devices. (Note for cature devices change Render to Capture)
$device = Get-ItemProperty -Path "HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render\*\" | where {$_."DeviceState" -eq 1} | foreach-object -Process {(Get-ItemPropertyValue -Path ($_.PSPath + "\Properties\") -Name "{a45c254e-df1c-4efd-8020-67d146a850e0},2")} | Where-Object {$_ -like $name}
C:\bin\NIRCMDC setdefaultsounddevice $device 1
C:\bin\NIRCMDC setdefaultsounddevice $device 2
为了跟进Dale Newton的帖子,NirCmd是一个很好的方法来实现这个功能。此外,如果你将其与AutoHotKey配对使用,你可以创建一个可执行文件,在每次运行时更改设备而不打开烦人的CMD窗口。例如,我有两个常常切换的源,一个是我的耳机,另一个是我的显示器。对于我的显示器,我创建了一个ahk脚本来实现这一点:
#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir% ;I have nircmd in the same folder as these scripts
Run, nircmd setdefaultsounddevice "Acer X34-8" 1
Run, nircmd setdefaultsounddevice "Acer X34-8" 2
还有一个用于我的耳机,最后两行更改为:
Run, nircmd setdefaultsounddevice "Headset Earphone" 1
Run, nircmd setdefaultsounddevice "Headset Earphone" 2
'===============================================================================
'This script uses sendkeys to select the Sound Output device
'First parameter should be the desired device number in 'Playback Devices' list
'===============================================================================
Option Explicit
Const SleepTime = 200
Dim WindSh
'===============================================================================
'MAIN ROTUINE
'===============================================================================
'Check the command line input
if ( Wscript.Arguments.Count <> 1) then
MsgBox "You must provide a single integer argument representing the device number", vbinformation + vbokonly, Wscript.ScriptName
Wscript.Quit 1
elseif ( false = IsNumeric( Wscript.Arguments.Item(0) ) ) then
MsgBox "The argument provided was not an integer number: " & Wscript.Arguments.Item(0), vbinformation + vbokonly, Wscript.ScriptName
Wscript.Quit 2
End If
set WindSh = CreateObject("Wscript.Shell")
WindSh.run("control.exe mmsys.cpl")
do while (WindSh.AppActivate("Sound") = false)
WScript.Sleep SleepTime
loop
WindSh.sendkeys("{DOWN " & Clng( Wscript.Arguments.Item(0) ) & "}")
WScript.Sleep SleepTime
WindSh.sendkeys("{TAB 2}")
WScript.Sleep SleepTime
WindSh.sendkeys("{ENTER}")
WScript.Sleep SleepTime
WindSh.sendkeys("%{F4}")
WScript.Sleep SleepTime
if (WindSh.AppActivate("Sound") = true) then
WindSh.sendkeys("%{F4}")
end if
nircmd setdefaultsounddevice speakers
,当耳机插入时声音仍将从扬声器中输出。可能与通过脚本切换音频设备无关,但我也通过HDMI将电脑连接到电视上。
当我想在电视上观看视频文件时,我使用Media Player Classic Home Cinema - 这使我可以在选项中为MPH:HC指定音频设备,而无需在整个计算机上切换默认声音设备。
如果您的用法类似于我的,也许MPC:HC可以为您解决问题。
Win32_SoundDevice
,但它并没有在这方面提供任何帮助。 - Joey