DSA2011一键换肤通用脚本
善领DSA2011版发布后,版本不断升级,尤其是皮肤开放性,给GY很大的方便,精美皮肤不断涌现。但每次更换皮肤都必须手工操作,显得很不方便。能否实现多幅皮肤共存一键换肤呢?下面提供的脚本程序就可以实现一键换肤。为方便GY使用与修改,特作说明如下:
1、默认环境
⑴卡名SDMMC、原始端口为2、波特率为4800、虚拟端口3;
[测试环境:5吋迪瑞特一体机(WinCE 6.0 Com2 4800)、KLD(C1867-C7304-2431W08)、CJT黄金版(6020-5628-1386)]
⑵卡根目录已安装有一机多图(MobileNavigator)、凯立德(KLD800)、城际通(CJT)、常用工具(Tools),而善领导航预警系统(DSA2011)则安装在SDMMC\tools\Script\DSA2011目录中;
环境与上述不相同时,需按后面的说明进行修改。
2、安装说明
⑴将附件解压后存入卡根目录(如SDMMC\),再用纯文本编辑软件将\MobileNavigator\Menu\Navi\Navi.ini文件中的所有卡名SDMMC改为自己的卡名(共九处);
⑵将DSA2011_P52版(附件不提供,请另行下载)全部文件考入SDMMC\tools\Script\DSA2011目录中,再将多套皮肤资源文
件(RES_800x480文件夹)以RES_800x480_2,RES_800x480_3,...拷入DSA2011目录中,在DSA2011中建
立一个空文档Skin1.txt(附件已有此文件) ;
⑶将SDMMC\tools\Script\DSA2011SkinMessage.mscr中“y=...”改为实际皮肤总套数,再将各套皮肤的名称信息录入到s[1],s[2],...;
⑷根据需要修改导航软件的配置文件和建立调用导航软件的脚本文件(本文不提供,根据需要修改和建立);
⑸修改开机启动文件的路径或设好一机多图入口,使一机多图(SDMMC\MobileNavigator\MobileNavigator.exe)成为启动文件。
3、脚本功能
⑴提供升序换肤和降序换肤功能,显示换肤序号和名称信息,实现运行DSA2011前一键换肤;
⑵提供显示当前皮肤功能。
4、脚本清单
(附件中的所有*.mscr文件,修改时请用纯文本编辑软件)
⑴升序换肤SetDSA2011SkinUp1.mscr和SetDSA2011SkinUp2.mscr清单:
SetDSA2011SkinUp1.mscr:
# 运行SetDSA2011SkinUp2.mscr脚本对应的执行文件
RUN (SystemPath("ScriptExe")&"\SetDSA2011SkinUp2.exe")
#延时4秒后关闭皮肤信息提示窗
sleep 4000
If (WndExists("当前状态"))
Close("当前状态")
EndIf
Exit
SetDSA2011SkinUp2.mscr:
# 调用表示DSA2011皮肤信息脚本DSA2011SkinMessage.mscr
CallScript(SystemPath("ScriptExe")&"\DSA2011SkinMessage.mscr")
# 循环升序设置Skin1.txt,Skin2.txt,Skin3.txt,...
# (Skin1.txt表示第一套皮肤,Skin2.txt表示第一套皮肤,...)
x=1
While (1)
If (x<>y)
If fileExists (SystemPath("ScriptExe")&"\DSA2011\Skin"&x&".txt")
Rename(SystemPath("ScriptExe")&"\DSA2011\Skin"&x&".txt",SystemPath("ScriptExe")&"\DSA2011\Skin"&x+1&".txt"
,true)
Rename(SystemPath("ScriptExe")&"\DSA2011\RES_800x480",SystemPath("ScriptExe")&"\DSA2011\RES_800x480_"&x,true)
Rename(SystemPath("ScriptExe")&"\DSA2011\RES_800x480_"&x+1,SystemPath("ScriptExe")&"\DSA2011\RES_800x480",true)
Message((" DSA2011皮肤设为Skin"&x+1&":"&s[x+1]),"当前状态")
exit
Endif
else
Rename(SystemPath("ScriptExe")&"\DSA2011\skin"&y&".txt",SystemPath("ScriptExe")&"\DSA2011\skin1.txt",true)
Rename(SystemPath("ScriptExe")&"\DSA2011\RES_800x480",SystemPath("ScriptExe")&"\DSA2011\RES_800x480_"&y,true)
Rename(SystemPath("ScriptExe")&"\DSA2011\RES_800x480_1",SystemPath("ScriptExe")&"\DSA2011\RES_800x480",true)
Message((" DSA2011皮肤设为Skin1"&":"&s[1]),"当前状态")
exit
Endif
x=x+1
EndWhile
exit
⑵降序换肤SetDSA2011SkinDown1.mscr和SetDSA2011SkinDown2.mscr清单:
SetDSA2011SkinDown1.mscr:
# 运行SetDSA2011SkinDown2.mscr脚本对应的执行文件
RUN (SystemPath("ScriptExe")&"\SetDSA2011SkinDown2.exe")
#延时4秒后关闭皮肤信息提示窗
sleep 4000
If (WndExists("当前状态"))
Close("当前状态")
EndIf
Exit
SetDSA2011SkinDown2.mscr:
# 调用表示DSA2011皮肤信息脚本DSA2011SkinMessage.mscr
CallScript(SystemPath("ScriptExe")&"\DSA2011SkinMessage.mscr")
# 循环降序设置...,Skin3.txt,Skin2.txt,Skin1.txt
x=0
While (1)
If ((x+y)<>1)
If fileExists (SystemPath("ScriptExe")&"\DSA2011\Skin"&x+y&".txt")
Rename(SystemPath("ScriptExe")&"\DSA2011\Skin"&x+y&".txt",SystemPath("ScriptExe")&"\DSA2011\Skin"&x+y-1&".txt"
,true)
Rename(SystemPath("ScriptExe")&"\DSA2011\RES_800x480",SystemPath("ScriptExe")&"\DSA2011\RES_800x480_"&x+y,true)
Rename(SystemPath("ScriptExe")&"\DSA2011\RES_800x480_"&x+y-1,SystemPath("ScriptExe")&"\DSA2011\RES_800x480",true)
Message((" DSA2011皮肤设为Skin"&x+y-1&":"&s[x+y-1]),"当前状态")
exit
Endif
else
Rename(SystemPath("ScriptExe")&"\DSA2011\skin"&x+y&".txt",SystemPath("ScriptExe")&"\DSA2011\skin"&y&".txt",true)
Rename(SystemPath("ScriptExe")&"\DSA2011\RES_800x480",SystemPath("ScriptExe")&"\DSA2011\RES_800x480_"&x+y,true)
Rename(SystemPath("ScriptExe")&"\DSA2011\RES_800x480_"&y,SystemPath("ScriptExe")&"\DSA2011\RES_800x480",true)
Message((" DSA2011皮肤设为Skin"&y&":"&s[y]),"当前状态")
exit
Endif
x=x-1
EndWhile
exit
⑶显示当前皮肤PrintDSA2011Skin1.mscr和PrintDSA2011Skin2.mscr清单:
PrintDSA2011Skin1.mscr:
#运行PrintDSA2011Skin2.mscr脚本对应的执行文件
RUN (SystemPath("ScriptExe")&"\PrintDSA2011Skin2.exe")
#延时4秒后关闭皮肤信息提示窗
sleep 4000
If (WndExists("当前状态"))
Close("当前状态")
EndIf
Exit
PrintDSA2011Skin2.mscr:
# 调用表示DSA2011皮肤信息脚本DSA2011SkinMessage.mscr
CallScript(SystemPath("ScriptExe")&"\DSA2011SkinMessage.mscr")
# 循环检测当前皮肤编号并显示相关信息
x=1
While (x<=y)
If fileExists (SystemPath("ScriptExe")&"\DSA2011\Skin"&x&".txt")
Message((" DSA2011皮肤设为Skin"&x&":"&s[x]),"当前状态")
exit
Endif
x=x+1
EndWhile
exit
⑷皮肤数量与名称信息DSA2011SkinMessage.mscr清单:
DSA2011SkinMessage.mscr:
#如下变量y表示皮肤总套数,根据实际设置。
y=3
#如下数组s[n] (n=1,2,3,...)是DSA2011皮肤名称信息,请按实际输入。
s[1]="善领官方发布正式版(左方向——右预警)完全显示版 !"
s[2]="机友DIY官方正式版(左预警——右方向)完全显示版 !"
s[3]="F版主速度白色数码方向罗盘中文完全显示版(白天)!"
5、特别说明
⑴脚本采用通用语句编写,增加皮肤数量极为方便,先将皮肤资源拷入DSA2011按规则重命名,再修改DSA2011SkinMessage.mscr中y=语句和s[n]语句即可;
⑵DSA2011每个资源文件允许包含白天和夜间两种皮肤,但只含白天皮肤更换更方便;
⑶本脚本在FURUN版主的建议后做了修改,全部使用相对路径,通用性更强,不同的GPS用户只需要将附件拷入卡根目录即可运行,但愿换肤脚本对您有用或给您启发,更愿各位GY在换肤中享受快乐!请回帖与我共分享,如有问题请跟帖提醒,以便修改更正。
附件:
DSA2011一键换肤通用脚本.rar (1.61 MB)
普清版附件:
DSA2011一键换肤通用脚本(普清).rar (1.55 MB)