起因

我时常认为QQ和微信通知的音量相比我正常听歌、观看视频的音量一直是过高的。正常我们可以使用 Windows 的音量合成器来单独调整每个程序的音量。但是,QQ不一样,不一样!你每次调完之后,过几个小时,它自己又会跳回100%,疑似是QQ音频流新建导致的调整失效。

搜寻一番后,发现可以用 wzv5/VolumeLock 这个项目来把指定进程的音量固定住。它会通过 Windows 的 Core Audio API 锁定进程音量。

下载 VolumeLock

有两种方式。

手动下载

打开项目的 Release 页面:

https://github.com/wzv5/VolumeLock/releases/latest

下载后解压,把 VolumeLock.exe 放到一个固定目录,例如:

1
D:\Tools\VolumeLock\

后面创建的配置文件也要放在这个目录里。

使用 Scoop 安装

如果你已经在用 Scoop,也可以直接安装:

1
2
scoop bucket add wzv5 https://github.com/wzv5/ScoopBucket
scoop install wzv5/volumelock

创建 config.yaml

VolumeLock.exe 所在目录创建一个 config.yaml 文件

如果你是使用scoop安装,应该是在

1
C:\Users\username\scoop\apps\volumelock\20220310

写入下面的内容:

1
2
3
4
5
6
7
8
-
type: filename
path: "QQ.exe"
volume: 5
-
type: filename
path: "Weixin.exe"
volume: 5

这里的意思是:

  1. 使用 filename 按文件名匹配程序。
  2. 把QQ和微信的音量锁定在 5。

VolumeLock的更多配置方法请到项目主页查看,这里只介绍QQ和微信的配置。

启动和测试

配置好之后,启动 VolumeLock.exe,查看音量合成器对应数值是否为5。

隐藏窗口和开机自启

这时你会发现它运行是有控制台窗口的,我们需要隐藏掉。

创建一个run.vbs文件

1
2
3
Set WshShell = CreateObject("WScript.Shell")
WshShell.CurrentDirectory = "PATH\TO\VOLUMELOCK"
WshShell.Run """PATH\TO\VOLUMELOCK\VolumeLock.exe""", 0, False

这里的 PATH\TO\VOLUMELOCK 替换成你 VolumeLock.exe 的目录,例如 D:\Tools\VolumeLockD:\Tools\VolumeLock\VolumeLock.exe。这样程序就可以静默在后台运行。

然后我们把 run.vbs 的快捷方式放到开机启动项里:

  1. Win + R
  2. 输入:
1
shell:startup
  1. 在打开的目录里放入 run.vbs 的快捷方式。

这样登录 Windows 后,VolumeLock 就会自动后台运行,锁定音量。

以上。