zer*_*ero 33 audio windows-registry powershell cmd.exe windows-10
我正在尝试在 Windows 10 上编写一个批处理文件,该文件允许我在运行时在耳机和扬声器之间切换作为默认音频设备。我不想使用任何第三方软件。
我尝试四处搜索,但我只找到了似乎不起作用的旧脚本,并且还引用了HKCU:\Software\Microsoft\Windows\CurrentVersion\Applets\Volume Control\一条似乎不再存在的路径。我在 Windows 10 寄存器上找不到任何关于此的信息,如果我不确定自己在做什么,我也不喜欢过多地摆弄寄存器。
Jon*_*nno 42
感谢您不希望使用任何第三方软件,但如果您不介意使用 ~100kb exe,您可以选择使用Nircmd和以下命令:
nircmd setdefaultsounddevice "Speakers" 1
Run Code Online (Sandbox Code Playgroud)
或者
nircmd setdefaultsounddevice "Headphones" 1
Run Code Online (Sandbox Code Playgroud)
您需要确保使用下面列出的音频设备的确切名称Playback Devices(右键单击系统托盘中的声音控件)。将它们重命名Properties为更简单的名称可能更容易,特别是如果名称有任何冲突。
将1在命令表示“默认设备”的结束。使用2表示“默认通信设备”。
如果你真的不想使用第三方工具,这里有一个注册表项的差异,当我改变我的默认声音设备时,它似乎会改变,它可能对你有用,但我不知道到底是什么它在做。看起来它不像 1 或 0 那样简单来表明它是否是默认值。
pgr*_*pgr 12
这要求您从此处下载并安装 AudioDevice commandlet: https ://github.com/frgnca/AudioDeviceCmdlets
按照他们的安装说明进行操作,并检查命令行开关是否在您的 Powershell 中运行。
然后你可以使用这个脚本:
<#
Use
Get-AudioDevice -List
to learn about available devices on your system.
Then set the two variables below with the start of their names.
#>
$device1 = "PHILIPS"
$device2 = "Speakers"
$Audio = Get-AudioDevice -playback
Write-Output "Audio device was " $Audio.Name
Write-Output "Audio device now set to "
if ($Audio.Name.StartsWith($device1)) {
(Get-AudioDevice -list | Where-Object Name -like ("$device2*") | Set-AudioDevice).Name
} Else {
(Get-AudioDevice -list | Where-Object Name -like ("$device1*") | Set-AudioDevice).Name
}
Run Code Online (Sandbox Code Playgroud)
然后您可以将该脚本设置为任务栏或任何位置的快捷方式。这是我使用的快捷方式示例:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -windowstyle hidden C:\Tools\ToggleSoundDevice.ps1
您还可以找到许多解决方案来为此附加快捷键。
小智 6
由于 Windows 8(或更早版本?)PC 的音频配置存储在HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\MMDevices\Audio\Render. 下Render有GUID命名键,每个键包含DeviceState在根DWORD值。但它是如何编码的?
请参阅MSDN 上的 DEVICE_STATE_XXX 常量:
因此,在 1 和 2 之间切换的 powershell/bat 脚本应该可以解决问题。
编辑:要获得人类可读的设备名称,请{b3f8fa53-0004-438e-9003-51a46e139bfc},6在Properties子项下阅读
| 归档时间: |
|
| 查看次数: |
75039 次 |
| 最近记录: |