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')"]
我有一个 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')"]