(AHK)缩短这个自动热键脚本,可能吗?

问题描述 投票:0回答:2
^+a::
soundset +8
soundget vol
tooltip % "volume = " round(vol), 1900, 1000

settimer, removetooltip1, -3000
return
removetooltip1:
tooltip
return

^+s::
soundset -8
soundget vol
tooltip % "volume = " round(vol), 1900, 1000

settimer, removetooltip2, -3000
return
removetooltip2:
tooltip
return

^+c::
soundset, +1,, mute
soundget, mutestate, master, mute
if mutestate=on
tooltip sound = off, 1900, 1000
else
tooltip sound = on, 1900, 1000

settimer, removetooltip3, -3000
return
removetooltip3:
tooltip
return

使用此脚本,当您使用热键更改音量或静音时,会弹出小工具提示,告知当前音量或静音/取消静音状态。

它的工作没有任何问题,但我想知道是否可以将其中三个结合起来,也许只使用一次 settimer 以避免不必要的(如果有的话)重复?

也许是这样的

(
^+a::
....
....
^+s::
....
....
^+c::
....
....
)

settimer, removetooltip, -3000
return
removetooltip:
tooltip
return

正如你所见,我显然是菜鸟。我需要帮助:)

windows autohotkey
2个回答
1
投票

您只需要一个计时器即可删除工具提示:

^+a::
    soundset +8
    soundget vol
    tooltip % "volume = " round(vol), 1900, 1000
    settimer, removetooltip, -3000
return

^+s::
    soundset -8
    soundget vol
    tooltip % "volume = " round(vol), 1900, 1000
    settimer, removetooltip, -3000
return

^+c::
    soundset, +1,, mute
    soundget, mutestate, master, mute
    if mutestate=on
        tooltip sound = off, 1900, 1000
    else
        tooltip sound = on, 1900, 1000
    settimer, removetooltip, -3000
return

removetooltip:
    tooltip
return

0
投票

我的做法是这样的:

^+a::
^+s::
    SoundSet, (A_ThisHotkey ~= "a$" ? "+" : "-") 8
    SoundGet, vol
    DisplayToolTip("volume = " round(vol))
    SetTimer, RemoveTooltip, -3000
return

^+c::
    SoundSet, +1, , mute
    SoundGet, mutestate, master, mute
    DisplayToolTip("sound = " (mutestate = "on" ? "off" : "on"))
    SetTimer, RemoveTooltip, -3000
return

DisplayToolTip(msg, duration := 3000, x := 1900, y := 1000)
{
    ToolTip, % msg, % x, % y
    SetTimer, RemoveTooltip, % duration * -1
}

RemoveTooltip()
{
    ToolTip
}

基本上利用ternaries来消除重复的代码。
您可能想知道

A_ThisHotkey ~= "a$"
是什么。
~=
(docs) 是正则表达式简写,在正则表达式中我们检查最后一个字符是否是 a
也可以用更经典的方式来完成,例如
SubStr(A_ThisHotkey, 0) = "a"
,如果你愿意的话。

© www.soinside.com 2019 - 2024. All rights reserved.