Скрипт Rainmeter Lua через событие наведения курсора мыши

#lua #mouseover #rainmeter

#lua #наведение курсора мыши #rainmeter

Вопрос:

У меня есть скрипт Lua, который я пытаюсь запустить с Rainmeter. В настоящее время скрипт выполняется, и я вижу, что в одной строке моего txt-файла «Notes» к нему применяется шифр Caesar, а затем Update() функция изменит ScriptMeter Text поле, чтобы оно соответствовало выходному шифру.

Чего я, похоже, не могу выяснить, так это как вызвать этот скрипт при событии наведения курсора мыши с помощью Rainmeter. Мой план состоит в том, чтобы применить шифр в цикле к событию наведения курсора мыши, пока мышь находится над ним, и отменить шифрование до неразборчивого текста, когда я уберу мышь.

MyLua.ini

 [ScriptMeasure]
Measure=Script
ScriptFile="#@#ScriptsMyLua.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
  

Ответ №1:

Участник Reddit по имени / u / GlobTwo помог мне разобраться в этом, поэтому я решил опубликовать его ответ и здесь.

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