V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
feng32
V2EX  ›  程序员

如何在一段时间内逐渐降低 Windows 的音量?

  •  
  •   feng32 · 2021-06-21 22:24:47 +08:00 · 2878 次点击
    这是一个创建于 1286 天前的主题,其中的信息可能已经有所发展或是发生改变。

    有些用户在晚上放音乐时会有这个需求

    Linux 下应该可以用 Bash 非常方便地实现

    Foobar2000 的一些插件或许也可以实现,但是解决方案和具体软件绑定不太好


    请问有什么现成的工具可以实现这一需求吗?

    17 条回复    2021-06-22 12:00:36 +08:00
    lalalaqwer
        1
    lalalaqwer  
       2021-06-21 22:49:27 +08:00
    现成工具不知道,不过感觉 autohotkey 写个脚本应该可以的
    lloovve
        2
    lloovve  
       2021-06-21 22:56:51 +08:00 via iPhone
    单片机做个虚拟键盘,发送音量键值
    lazycat
        3
    lazycat  
       2021-06-21 23:14:17 +08:00 via Android
    用 powershell 啊
    kokutou
        4
    kokutou  
       2021-06-21 23:55:06 +08:00 via Android
    ahk 写脚本+1
    转制成 exe
    然后 cmd 里延迟调用或者 at 计划任务调用
    dingwen07
        5
    dingwen07  
       2021-06-22 01:00:10 +08:00 via iPhone
    Task Scheduler + NirCmd
    dangyuluo
        6
    dangyuluo  
       2021-06-22 01:53:35 +08:00
    用单片机+步进电机控制音响的音量旋钮
    haimall
        7
    haimall  
       2021-06-22 07:00:01 +08:00 via Android   ❤️ 1
    搜索 定时音量控制
    celeron533
        8
    celeron533  
       2021-06-22 08:56:21 +08:00
    PhaSelEza
        9
    PhaSelEza  
       2021-06-22 08:57:56 +08:00
    控制精度要求不高的话,可以定时模拟键盘输入,用 SendInput 发送 VK_VOLUME_DOWN 。
    wanguorui123
        10
    wanguorui123  
       2021-06-22 09:01:32 +08:00 via iPhone
    按键精灵?
    killeder
        11
    killeder  
       2021-06-22 09:24:17 +08:00
    随着打呼噜的声音变大,而逐渐减小吗
    newmlp
        12
    newmlp  
       2021-06-22 09:33:26 +08:00
    半个小时就能写出来的程序
    ysc3839
        13
    ysc3839  
       2021-06-22 09:45:54 +08:00 via Android
    可以参考 EarTrumpet 的代码,实现一个设置音量的工具。
    https://github.com/File-New-Project/EarTrumpet
    Lemeng
        14
    Lemeng  
       2021-06-22 09:56:25 +08:00
    现成的估计需求的人少,没有。自己写差不多
    g00001
        15
    g00001  
       2021-06-22 10:27:45 +08:00   ❤️ 1
    仅仅是模拟按键可能不行,这个还要读取音量进行比对,
    能直接控制计划任务会更好。用 aardio 简单实现了一下:

    import win.ui;
    /*DSG{{*/
    var winform = win.form(text="定时自动降低音量";)
    winform.add(
    edit={cls="edit";left=29;top=69;right=728;bottom=430;db=1;dl=1;dr=1;dt=1;edge=1;multiline=1;z=2};
    trackbar={cls="trackbar";left=22;top=20;right=722;bottom=50;dl=1;dr=1;dt=1;max=100;min=0;z=1}
    )
    /*}}*/

    import sys.audioVolume;
    var volumeCtrl = sys.audioVolume();
    winform.trackbar.setRange(0,100);
    winform.trackbar.pos = volumeCtrl.volume;

    import win.taskScheduler
    var taskScheduler = win.taskScheduler(winform);

    var task;
    task = taskScheduler.create("自动降低音量开始",function( arguments ){
    if(volumeCtrl.volume<=10) return; //小于最低音量时取消任务
    task.enabled = false;

    winform.setInterval(
    function(){

    volumeCtrl.volume = volumeCtrl.volume - 5;

    //小于最低音量时停止任务
    if(volumeCtrl.volume<=10){
    volumeCtrl.volume = 10;
    task.enabled = true;
    return 0;
    }
    },1000
    )
    })

    //每天 10 点 11 分开始执行任务
    task.time = {minute = 18 ; hour = 10 ;}

    //启动计划任务
    taskScheduler.start();

    //用于同步显示系统音量
    winform.setInterval(
    function(){winform.trackbar.pos = !volumeCtrl.mute ? volumeCtrl.volume : 0;},2000
    )

    winform.show(true)
    win.loopMessage();
    Plague
        16
    Plague  
       2021-06-22 11:58:00 +08:00
    用 python 写一个就行,很简单
    oyasumi
        17
    oyasumi  
       2021-06-22 12:00:36 +08:00 via Android
    @dangyuluo 优秀
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2451 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 15:52 · PVG 23:52 · LAX 07:52 · JFK 10:52
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.