You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改已有AutoHotkey脚本的Gui名称?合并音量脚本遇异常

问题描述

我找到一个实用的OSD音量脚本,想把它合并到正在开发的大型脚本里。但需要让这个脚本的GUI名称和父脚本区分开,于是我尝试在音量模块开头添加Gui, New和Gui, VOL:New,并把所有Gui,替换成Gui VOL:。修改后,GUI能在鼠标悬停任务栏时显示音量,但无法调节音量。

以下是该音量脚本的正常工作版本:

#SingleInstance, Force
SetBatchLines, -1

; ▏════════════ 用户可配置变量(按需修改) ════════════▏ 

Gui_W                := A_ScreenWidth / 2 - 500
Gui_X                := A_ScreenWidth - gui_W - 16
Gui_Y                := A_ScreenHeight - 120
; ─ ─ ─ ─ ─ ─ 
背景色            := 0x000000
字体色            := 0x4499FF
进度条背景色        := 0x000000
进度条颜色            := 0x005AC7
GUI圆角            := 3
; ─ ─ ─ ─ ─ ─ 
音量增大热键            := "^!=" 
音量减小热键            := "^!-"
静音热键             := "^!0"    
调节幅度                := 1
; ─ ─ ─ ─ ─ ─ 
更新频率            := 1
自动隐藏延迟                := 1500
最大透明度            := 200
; ─ ─ ─ ─ ─ ─ 
任务栏悬停启用         := 1

; ▏════════════ 用户变量结束 ════════════▏ 

Gui_X                := Gui_X ? "x" Gui_X : ""
Gui_Y                 := Gui_Y ? "y" Gui_Y : ""
更新标记                 := 0

SoundGet, 当前音量
记录音量            := 当前音量
透明度                 := 0
控件宽度            := GUI_W - 30

; ▏════════════ 音量GUI创建 ════════════▏ 
Gui, Color, % 背景色, 
Gui, Font, c%字体色% s10 Bold
Gui, Add, Text, w%控件宽度% Center, 音量
Gui, Font
Gui, Add, Progress, w%控件宽度% vProgress c%进度条颜色% +Background%进度条背景色%, % 记录音量
Gui, Font, c%字体色% s12 Bold
SoundGet, 当前音量
Gui, Add, Text, w%控件宽度% Center vVol, % Floor( 当前音量 ) "%"
Gui, +AlwaysOnTop -Caption +E0x20 -SysMenu +ToolWindow
Gui, Show, NoActivate h80 w%Gui_W% %Gui_X% %Gui_Y% , Vol_OSD
If ( GUI圆角 )
    WinSet, Region, w%Gui_W% h100 R10-10 0-0, Vol_OSD
WinSet, Transparent, %透明度%, Vol_OSD

; ▏════════════ 设置热键 ════════════▏ 
Hotkey, % 音量增大热键, 音量增大
Hotkey, % 音量减小热键, 音量减小
Hotkey, % 静音热键, 音量静音
SetTimer, 更新, % 更新频率
SetTimer, 淡出, % "-" 自动隐藏延迟
Return

; ▏════════════ GUI淡出效果 ════════════▏ 
淡出: 
    While ( 透明度 > 0 && 更新标记 = 0)
    {    透明度 -= A_Index / 4
        WinSet, Transparent, % 透明度, Vol_OSD
        Sleep, 5
    } 
Return

; ▏════════════ 更新GUI显示 ════════════▏ 
更新: 
    SetTimer, 更新, % 更新频率
    更新标记                := 0
    SoundGet, 当前音量
    If ( 当前音量 <> 记录音量 || 强制更新 = 1)
    {    更新标记             := 1
        GuiControl,, Progress, % Ceil( 当前音量 )
        GuiControl,, Vol, % Ceil( 当前音量) "%"
        记录音量         := 当前音量
        While ( 透明度 < 最大透明度 )
        {    透明度         += A_Index * 2
            WinSet, Transparent, % 透明度, Vol_OSD 
            Sleep 1
        } 
        SetTimer, 淡出, % "-" 自动隐藏延迟
        强制更新             := 0
    } 
Return

; ▏════════════ 音量减小 ════════════▏ 
音量减小:
    SoundSet, -%调节幅度%, MASTER
    SetTimer, 更新, -1
Return

; ▏════════════ 音量增大 ════════════▏ 
音量增大:
    SoundSet, +%调节幅度%, MASTER
    SetTimer, 更新, -1
Return

; ▏════════════ 音量静音 ════════════▏ 
音量静音:
    Send, {Volume_Mute}
    SoundGet, 是否静音, MASTER, MUTE
    Gui, Font
    If ( 是否静音 = "On" )
        Gui, Font, cRed Italic s24
    else
        Gui, Font, c%字体色% s24 Bold
        GuiControl, Font, Vol
    强制更新             := 1
Return

#If ( 任务栏悬停启用 = 1 && 鼠标在任务栏() )
; ▏════════════ 滚轮向下 ════════════▏ 
WheelDown::    
    SoundSet, -%调节幅度%, MASTER
    SetTimer, 更新, -1
Return

; ▏════════════ 滚轮向上 ════════════▏ 
WheelUp::
    SoundSet, +%调节幅度%, MASTER
    SetTimer, 更新, -1
Return
#If 

; ▏════════════ 检测鼠标是否在任务栏函数 ════════════▏ 
鼠标在任务栏()
{    MouseGetPos, mX, mY, mWin
    WinGetClass, wClass, ahk_id %mWin%
    Return % wClass = "Shell_TrayWnd" ? 1 : 0
}

RETURN
^Home::  
        Reload
    Return
^Esc::  
        ExitApp
    Return

内容的提问来源于stack exchange,提问作者V0RT3X

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 19:11:02