如何修改已有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
相关产品推荐
相关产品推荐

