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();    

 

 

posted @ 2012-08-04 12:20  钝角罗盘  阅读(400)  评论(0)    收藏  举报