【问题标题】:AutoHotKey Error "variable name contains an illegal character "100.000000"AutoHotKey 错误“变量名包含非法字符“100.000000”
【发布时间】:2014-06-03 20:00:36
【问题描述】:

我正在制作一个 AutoHotKey 脚本,以便在我的无媒体键键盘上有媒体键。 所有快捷方式都有效,但我想制作一个将音量设置为最大的快捷方式,除非它已经设置为最大,在这种情况下它将设置为 10。
这是我的脚本:

    SoundGet, master_volume

    ^!Down::SendInput {Media_Play_Pause}
    ^!Left::SendInput {Media_Prev}
    ^!Right::SendInput {Media_Next}
    ^!Up::SendInput {Media_Stop}
    ^!+Down::SendInput {Volume_Mute}
    ^!+Left::SendInput {Volume_Down}
    ^!+Right::SendInput {Volume_Up}
    ^!+Up::if (%master_volume% = 100) {
            SoundSet, 10
        } else {
            SoundSet, 100
        }

但我不断收到错误“错误:以下变量名包含非法字符:“100.000000””(100.000000 是我的音量设置,例如,如果设置为最大值的一半,它将读取 50.000000)并突出显示“if (%master_volume% = 100)”行...
我对 AutoHotKey 很陌生,但我已经阅读了很多(我认为是)相关文档,但无法弄清楚

【问题讨论】:

  • 这是语法问题...

标签: autohotkey


【解决方案1】:

错误来自您使用 `%master_volume% 的方式。考虑:

当你这样做时:

somevariable = george

somevariable 的值设置为“george”

但是当你这样做时:

%somevariable% = george

变量名设置为“george”

这意味着当你这样做时:

%master_volume% = 100

您也将variable_name 转换为变量。实际上,您正在尝试创建一个名为100.000000 的变量,并将其赋值为100

由于master_volume100.000000,这是非法的,因为您不能在变量名中使用.

但是,如果您使用SetFormat, "D", 0,那么您将强制您的小数没有任何浮点数(没有.000000),然后您将能够从10075 或无论master_volume 的值是什么。

但是,您可能希望它以这种方式工作。您应该使用 alpha bravo 提出的简单答案,然后使用:

master_volume = 100

【讨论】:

  • 谢谢你解释得这么好!我已经从master_volume 中删除了%,它现在正在工作 - 然而它只会在我重新启动脚本之前单向工作,即按下快捷方式,音量变为 100。按下它再次,什么都没有。重新启动脚本,按快捷方式,切换到 10。再按一次...什么都没有。有什么想法吗?
  • 这是一个不同的问题。您需要阅读有关“自动执行”部分的文档。然后,将您的 GUI 放入它自己的子程序中,SoundGet 作为该子程序的第一行(不要忘记最后的return!)。然后你从你的热键调用这个子。热键将脚本保存在内存中。现在你的SoundGet sub 只在脚本启动时被调用 - 但你希望它在sub 运行时被调用。
  • 完美!我知道我错过了什么!现在像魅力一样工作,非常感谢!
【解决方案2】:

这应该可以工作

^!+向上::
如果(master_volume = 100){
SoundSet, 10
} 其他 {
SoundSet, 100
}
返回

删除“master_volume”周围的%

【讨论】:

    猜你喜欢
    • 2019-04-17
    • 2021-08-09
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2021-05-13
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多