Gadget开发长久保存数据问题解决
Gadget桌面小工具,可由html,css,js等web元素开发完成,使得web开发和桌面软件之间有了一条消息通道。
在为信息系统开发办公助手桌面消息提醒软件时,选择gadget。小工具开发过程中碰到的一个关键问题:gadget保存的设置值,无法长久保存;这就造成了gadget小工具关闭再打开或计算机重启后,小工具无法恢复到设置好的状态,重新回到初始空值。如何解决这个问题关系到工具的实用性,下面是解决该问题一些做法:
(一) 最初考虑使用cookie,虽然Gadget是由html,js等元素组成,但并不支持cookie属性,此路不通。
(二) 参考msdn相关API:
保存设置值:System.Gadget.Settings.write(param, val);
读取设置值:System.Gadget.Settings.read(param);
问题依然存在,System.Gadget.Settings.write方法写入的值只是半永久的(semi-permanent),相关键-值对写入了C:\Users\{user}\AppData\Local\Microsoft\Windows Sidebar\Settings.ini文 件。在小工具运行时,相关设置一直保留并可读取,但Gadget关闭后Setting.ini里的设置会被清空,再打开时,设置值依然为空,问题未解决。可既然默认的setting.ini里的设置会被清空,那么gadget在保存时自身再创建写入一个永久性的文件,不就可完全保存下来了?于是就有了最终的解决方案。
(三)创建Scripting.FileSystemObject对应的ActiveXObject,来完成磁盘文件的读写,以下是关键代码行:
var fs = new ActiveXObject("Scripting.FileSystemObject");
(1)写入
var file= fs.CreateTextFile(persistentSettingFile) //persistentSettingFile为文件路径
file.WriteLine(name+"------"+value);
file.Close();
(2)读取
var settingsFile= fs.GetFile(persistentSettingFile);
var settings = settingsFile.OpenAsTextStream(1);
line = settings.ReadLine();

浙公网安备 33010602011771号