可以通过不同的宏访问和修改AutoHotKey全局变量?

mat*_*zac 5 variables autohotkey global-variables

我在 sof 上看到过类似的主题,但它的解决方案对我没有帮助。这让我很烦恼,基本上我想要的就是有一些方法来访问和修改一个值,该值将在我的单个 .ahk 文件中的宏中保持其最后更改的状态。

请参阅下面的示例,

~Home::Suspend

XButton1::

tog()

return

LButton::

shot()

return



var := "1"

tog(){
var *= -1
}

shot(){

If (var = "1") {

    Loop, 1 {

        Send {k}
        Sleep 65
        Send {WheelDown}
        Sleep 100
        Send {WheelUP}
        Sleep 10

    }

} Else {

    Send {k}

}

}
Run Code Online (Sandbox Code Playgroud)

我知道上面的内容是不正确的,我尝试在我的函数中使用“global”,但我只是无法获得我想要的效果。

Rob*_*ink 3

我所做的就是将 var 放在 .ini 文件中,特别是因为我有时运行多个需要访问同一变量的脚本。我还用它来在重新启动后保留变量值。该解决方案速度稍慢,因为数据保存到硬盘/SSD,但效果很好。

将值“S”写入“Finish”组中的变量“State”的示例

IniWrite, S, C:\2Podcasts\FinishOptions.ini, Finish, State
Run Code Online (Sandbox Code Playgroud)

在另一个脚本(其他 AutoHotKey 实例)中,我读取该值并将其分配给变量“FinishOption”。

IniRead, FinishOption, C:\2Podcasts\FinishOptions.ini, Finish, State
Run Code Online (Sandbox Code Playgroud)

如果你想切换值(True/False),你可以使用它。这将对变量的当前值执行 IF 操作并将变量设置为相反的值。

If (MyLoop := !MyLoop) ; Toggle the variable "MyLoop" True/False
{
    Do something
}
Else
{
    Do something else
}
return
Run Code Online (Sandbox Code Playgroud)