asia 发表于 2011-3-25 21:43:42

RM脚本Measure——Script(使用lua脚本)

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=ScriptMeasure就类似于“Plugin” Measure,可以拓展RM的功能。但脚本的编写却比Plugin(使用C++或C#编写的dll)的要简单得多。

开始
在皮肤配置中


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


例:





DynamicWindowSize=1
Update=1000


Measure=Script
ScriptFile=#CURRENTPATH#getinistring.lua
TableName=GetString;向在当前皮肤所在文件夹下的getinistring.lua脚本传递参数
FilePath="#CURRENTPATH#timesetting.cfg"
secName="time1"
KeyName="h"
Defstr=" "


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。


九天孤鸿 发表于 2011-3-26 00:26:07

沙发 支持一个

crazyares 发表于 2011-4-10 12:14:49

顶下 努力学习rm皮肤编写中

embolon 发表于 2011-4-10 22:17:01

哦,还能用lua的呀,要是支持python就好了,python更大众一些。

lea_gar 发表于 2011-5-16 11:51:39

<font face="monospace "><font color="#000000"><div class="blockcode"><div id="code0"><ol><li> <br />
<li>DynamicWindowSize=1 <br />
<li>Update=1000 <br />
<li><br />
<li> <br />
<li>Measure=Script <br />
<li>ScriptFile=#CURRENTPATH#getinistring.lua<br />
<li>TableName=GetString;向在当前皮肤所在文件夹下的getinistring.lua脚本传递参数<br />
<li>FilePath=&quot;#CURRENTPATH#timesetting.cfg&quot;<br />
<li>secName=&quot;time1&quot;<br />
<li>KeyName=&quot;h&quot;<br />
<li>Defstr=&quot; &quot;<br />
<li><br />
<li> <br />
<li>Meter=String <br />
<li>MeasureName=MeasureLuaScript <br />
<li>FontSize=12 <br />
<li>FontColor=255,255,255,255<br />
<li>Solidcolor=0,0,0,100</ol></div><em onclick="copycode($('code0'));">复制代码</em></div></font></font><br />
学习来了,支持下!

Ejgwg0629 发表于 2012-6-22 19:02:25

好像c语言....

zhangliwei 发表于 2012-11-7 11:48:37

看到这帖子真是高兴!

zhangliwei 发表于 2012-11-7 12:07:55

强烈支持楼主ing……

sydddsydd 发表于 2012-11-9 00:49:05

强烈支持楼主ing……顶一个先~

空弦落雁 发表于 2012-12-4 16:43:59

仙湖付在细看学习
页: [1] 2 3
查看完整版本: RM脚本Measure——Script(使用lua脚本)