- UID
- 4482
- 主题
- 注册时间
- 2010-7-3
- 在线时间
- 小时
- 最后登录
- 1970-1-1
签到天数: 2 天 [LV.1]初来乍到
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?点击注册
x
Preface:其实Script(脚本)这个Measure已不是什么新的Measure了,但是几乎没有多少中使用到它。可能是它使用的脚本语言门槛比较高的缘故。Rainmeter官网中的介绍(English):http://rainmeter.net/RainCMS/?q=LuaForRainmeter
使用的脚本为lua:http://baike.baidu.com/view/416116.htm
http://www.codingnow.com/2000/download/lua_manual.html
Measure=Script Measure就类似于“Plugin” Measure,可以拓展RM的功能。但脚本的编写却比Plugin(使用C++或C#编写的dll)的要简单得多。
开始
在皮肤配置中
[MeasureLuaScript]
Measure=Script ----
ScriptFile=MyScript.lua ----这个参数指定使用的脚本的路径,是必需的
TableName=MyScriptTable ----这个参数可以是任意值,它是用来与其它的脚本Measure区别开来的,所以值是唯一的,也是必需的
MySetting="SomeSetting" ----这个参数不是必须的,它是用来向当前使用的Lua脚本的传递参数的,参数的名称与数量都要与Lua脚本中的表PROPERTIES相对应。
UpdateDivider=1 ----这人与其它的Measure一样,可以不要
脚本中的内容:
一个表:
用来存放在皮肤中的变量,如上面的 MySetting
PROPERTIES=
{
MySetting="";
--
}
几个必要的函数:
function Initialize()
--初始化函数,皮肤刷新时,会调用这个函数
function Update()
--皮肤每更新更新一次,都会调用这个函数,
function GetStringValue()
function GetValue()
--这两个函数有且只能有一个,它的功能是返回字符串(GetStringValue)或数值(GetValue)给皮肤中调用该脚本的Measure
例:
- [Rainmeter]
- DynamicWindowSize=1
- Update=1000
- [MeasureLuaScript]
- Measure=Script
- ScriptFile=#CURRENTPATH#getinistring.lua
- TableName=GetString;向在当前皮肤所在文件夹下的getinistring.lua脚本传递参数
- FilePath="#CURRENTPATH#timesetting.cfg"
- secName="time1"
- KeyName="h"
- Defstr=" "
- [MeterLua]
- Meter=String
- MeasureName=MeasureLuaScript
- FontSize=12
- FontColor=255,255,255,255
- Solidcolor=0,0,0,100
复制代码
lua脚本中的代码:
- --[[
- *作者:asia
- *版本:1.0
- *描述:lua脚本For Rainmeter,获取配置文件
- *版权所有@
- ]]
- PROPERTIES =
- {
- filepath="";
- secName="";
- keyname="";
- defstr="";
- }
- function Initialize()
- FilePath =PROPERTIES.filepath;
- Secstr=PROPERTIES.secName;
- Keystr=PROPERTIES.keyname;
- Defstr=PROPERTIES.Defstr;
- end -- function Initialize
- function Update()
- StrVal=ReadIniFile(FilePath,Secstr,"H","0");
- end -- function Update
- function GetStringValue()
- if not StrVal then StrVal="can not get anystring!" end ;
- return StrVal;
- end -- function GetStringValue
- function ReadIniFile(filename,section,Key,default)
- local gotsec=false;
- local i,j=nil,nil;
- local Keyvalue=nil;
- if not filename or filename=="" then
- return "missing "filename"";
- elseif not section or section=="" then
- return "missing "secName"";
- elseif not Key or Key=="" then
- return "missing "keyName"";
- end ;
- section=string.lower(section);
- Key=string.lower(Key);
- for tmp in io.lines(filename,r) do
- tmp=string.lower(tmp);
- if not gotsec then
- i,j=string.find(tmp,section.."]");
- if i then gotsec=true end;
- else
- i,j,Keyvalue=string.find(tmp,Key.."%s*=%s*(.*)%s*");
- --print(Keyvalue);
- if i then break end;
- end;
- end;
- ----io.close(FileN);
- if not Keyvalue then Keyvalue=default end;
- return Keyvalue;
- end
复制代码
我想困难的不是这个脚本Measure的使用,而是lua脚本的编写。
所以我发这个帖只是为了让喜欢RM的朋友知道RM里还有这么一个Measure。
|
|