Rainmeter Lua 通过 MouseOver 事件编写脚本

Rainmeter Lua Script via MouseOver event

我有一个 Lua 脚本,我正在尝试 运行 使用 Rainmeter。目前脚本 运行s 和我可以看到我的 .txt 文件的一行 "Notes" 应用了凯撒密码,然后 Update() 函数将更改 ScriptMeter Text 字段匹配输出 Cipher.

我似乎无法找到的是如何使用 Rainmeter 在 MouseOver 事件上调用此脚本。我的计划是在鼠标悬停在鼠标悬停事件上时循环应用 Cipher,并在我移开鼠标时将 Cipher 撤消为难以辨认的文本。

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) --open the file, ovewrites the file each time
    str = f:read('*l') --read line
    f:close()
    --number = string.match(str, 1) --use a pattern search to find the first number in the file
    print(str) --test code


    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 --funciton Initialize

function Update()

    print(output)
    SKIN:Bang('!SetOption', 'ScriptMeter', 'Text', output)
    --return(output) --return the string

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 -- works correctly even if r is negative
            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

一位名叫 /u/GlobTwo 的 Reddit 成员帮助我解决了这个问题,所以我想我也会 post 他的回复。

MouseOverAction=[!CommandMeasure "ScriptMeasure" "encrypt('sometext', '1')"]