调整Windows音量步幅为1

背景

  最近买的键盘有音量旋钮,但是由于音响的声音太大,日常使用音量仅在1-8之间,这时候Windows的默认调节步幅是2就十分不方便。
  搜索后发现微软并未直接提供修改方式,不过找到了使用开源软件AutoHotKey(AHK)来拦截虚拟按键Volume_DownVolume_Up的方法。


  注意:许多游戏声明如果使用AutoHotKey模拟按键可能会导致封号,但本教程只监听了按键,并没有模拟按键输出。我自己玩的无畏契约、CS2、永劫、LOL等游戏都是正常的。

软件下载

软件官网
点击Download v2.0,下面提供的代码无法在v1.1上运行。
软件主界面

代码

  点击New script创建一个新的Empty脚本,点击Create然后右键在记事本中编辑.ahk文件,或者点击Edit直接选记事本也行。
创建页面
将下面的的代码粘贴到.ahk文件中

#NoTrayIcon ;禁用托盘图标

volume(offset) { ;调用显示Windows原始音量条
    static o := ComObject("{C2F03A33-21F5-47FA-B4BB-156362A2F239}", "{00000000-0000-0000-C000-000000000046}")
             ,q := ComObjQuery(o, "{41f9d2fb-7834-4ab6-8b1b-73e74064b465}", "{41f9d2fb-7834-4ab6-8b1b-73e74064b465}")
    qPtr := ComObjValue(q) ; 获取 q 的数值指针
    DllCall(NumGet(NumGet(qPtr + 0, "Ptr") + 3 * A_PtrSize, "Ptr"), "Ptr", qPtr, "Int", 0, "UInt", 0)
    SoundSetVolume offset
}

; 监听音量增加,并阻止默认行为
Volume_Up::
{
    currentVolume := SoundGetVolume() ; 获取当前音量
    newVolume := currentVolume +1  ; 调整音量
    if (newVolume > 100)  ; 限制最大音量为100
        newVolume := 100
    volume(newVolume) 
    return  ; 阻止按键的默认行为
}

; 监听音量减少,并阻止默认行为
Volume_Down::
{
    currentVolume := SoundGetVolume() ; 获取当前音量
    newVolume := currentVolume -1  ; 调整音量
    if (newVolume < 0)  ; 限制最小音量为0
        newVolume := 0
    volume(newVolume)
    return  ; 阻止按键的默认行为
}

  保存后双击运行,如果没有报错,应该能够在任务管理器中看到一个AutoHotKey后台进程


后台进程


  此时用旋钮调节音量,可以发现音量步幅已经变为1了。

打包成独立exe文件

  AutoHotKey脚本打包成exe之后可以不依赖于软件本身运行,也就是可以卸载它。

  点击主界面的Compile,可能会提示需要下载,稍等一会就好。
Compile

  选择刚刚的.ahk文件,选择64位,再点击Convert,就可以在相同目录下看到.exe文件了。


文件管理器


  可以把这个exe文件放到任意位置。

添加开机自动运行

  每次开机都要点一下很麻烦,有许多方法可以实现开机自启动,下面介绍一种简单方法。
  步骤:
    1、按下 Win + R,输入 shell:startup,并按下回车。
    2、在弹出的启动文件夹中,将音量步幅调节.exe文件复制到该文件夹中即可。
    3、然后重新启动电脑。


开机自动运行


  如果一切顺利,那么就可以在任务管理器中看到这个软件,占用仅仅2.0MB。

更多

  操作系统:Windows 11 24H2

  代码中volume函数的前4行是用来调用Windows音量条的,在外网某个论坛找到的,工作原理我也不懂。如果不添加这些,音量调节能正常工作,但是不会显示音量条UI。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值