Rainmeter Lua 脚本通过 MouseOver 事件触发

我有一个 Lua 脚本,我试着在 Rainmeter 上运行它。目前这个脚本已成功运行,我可以看到我的 .txt 文件中的一行 "Notes" 应用了凯撒密码,然后 Update() 函数将 ScriptMeter Text 字段更改为匹配的加密输出。

我找不到的是如何在 Rainmeter 中通过 MouseOver 事件调用此脚本。我的计划是在鼠标悬停时在循环中应用加密,当我移开鼠标时,将加密解除为不可读文本。

MyLua.ini

[ScriptMeasure]
Measure=Script
ScriptFile="#@#Scripts\MyLua.lua"

[StringStyle]
 FontFace=Trebuchet MS
 FontColor=255,245,207,255
 SolidColor=0,0,0,1
 StringStyle=Bold
 StringAlign=Center
 AntiAlias=1
 FontSize=20

[ScriptMeter]
Meter=String
MeterStyle=StringStyle
MeasureName=ScriptMeasure
Text=""
x=100
y=40

MyLua.lua

function Initialize()
    FilePath = SKIN:ReplaceVariables("#@#Scripts/MyLua.txt")
    f = io.open(FilePath) --打开文件,覆盖文件每一次
    str = f:read('*l') --读取一行
    f:close()
    --number = string.match(str, 1) --使用模式搜索在文件中找到第一个数字
    print(str) --测试代码

    encrypted = caesar.encrypt(str, 7)
    decrypted = caesar.decrypt(encrypted, 7)
    print("Original text:  ", str)
    print("Encrypted text: ", encrypted)
    print("Decrypted text: ", decrypted)
    output = encrypted

end --初始化函数

function Update()

    print(output)
    SKIN:Bang('!SetOption', 'ScriptMeter', 'Text', output)
    --return(output) --返回字符串

end

function encrypt(text, key)
    return text:gsub("%a", function(t)
            local base = (t:lower() == t and string.byte('a') or string.byte('A'))

            local r = t:byte() - base
            r = r + key
            r = r%26 --即使 r 是负数也能正确工作
            r = r + base
            return string.char(r)
        end)
end

local function decrypt(text, key)
    return encrypt(text, -key)
end

caesar = {
    encrypt = encrypt,
    decrypt = decrypt,
}

MyLua.txt

Notes
点赞
用户3376639
用户3376639

一个名为 /u/GlobTwo 的 Reddit 用户帮助我弄清了这个问题,所以我决定在这里贴出他的回复。

MouseOverAction=[!CommandMeasure "ScriptMeasure" "encrypt('sometext', '1')"]
2019-03-07 09:55:00