首页 > Wiz, Wiz二次开发 > WizKnowledge COM对象之IWizMeta,将设置信息保存到数据库中

WizKnowledge COM对象之IWizMeta,将设置信息保存到数据库中


IWizMeta是WizKMCore.dll包含的一个COM对象。Meta对象必须隶属于一个数据库,因此您不能直接创建这个对象,而是需要通过IWizDatabase对象来获得数据库中的Meta对象。
通过IWizDatabase.Metas,可以获得数据库的所有Meta信息。
 

Meta,就像ini文件里面的一个记录。Meta信息保存在数据库中,不和服务器同步。利用meta信息,您可以像利用ini文件那样,存储一些用户信息。在WizKnowledge自带的博客发布插件里面,就利用了Meta对象来存储用户数据。
 
    var objApp = new ActiveXObject(“WizExplorer.WizExplorerApp”);
    var database = objApp.Database;
    var settings_meta = “PublishHtml”;
    //
    …
        settings_meta = “PublishHtml_” + selected_documents.Item(0).Parent.RootFolder.Name;

        //从数据库获得用户设置信息,来进行初始化
        textAddress.value = database.Meta(settings_meta, “Address”);
        textPort.value = database.Meta(settings_meta, “Port”);
        textUserName.value = database.Meta(settings_meta, “UserName”);
        textPassword.value = database.Meta(settings_meta, “Password”);
        textImageWidth.value = database.Meta(settings_meta, “ImageWidth”);
        checkAutoAddMoreTag.checked = database.Meta(settings_meta, “AutoAddMoreTag”) == “1″;
        textCategory.value = database.Meta(settings_meta, “Category”);
        //
    

    …
        //将用户数据保存到数据库里面
        database.Meta(settings_meta, “Address”) = address;
        database.Meta(settings_meta, “Port”) = port;
        database.Meta(settings_meta, “UserName”) = username;
        database.Meta(settings_meta, “Password”) = password;
        database.Meta(settings_meta, “ImageWidth”) = textImageWidth.value;
        database.Meta(settings_meta, “AutoAddMoreTag”) = checkAutoAddMoreTag.checked ? “1″ : “0″;
        database.Meta(settings_meta, “Category”) = textCategory.value;

 
和IWizSettings不同,Meta是保存在数据库中,和数据库相关,而不是全局的设置。
 
IWizMetaCollection是文件夹对象IWizMeta的一个集合(数据),当需要返回一个IWizMeta集合的时候,会返回这个对象,例如IWizDatabase.Metas属性,就会返回这个对象。
这个对象实现了IEnumXXXX 接口,这样在某些语言内,可以通过fore_each来枚举集合内的每一个对象。
  • 文件:WizKMCore.dll
IWizMetaCollection对象
 
[
    object,
    uuid(7492D632-5461-42BC-BF59-6D93393892F8),
    dual,
    nonextensible,
    helpstring("IWizMetaCollection Interface"),
    pointer_default(unique)
]
interface IWizMetaCollection : IDispatch{
    //生成一个新的IEnumXXXX类型的接口,可以在某些语言内使用for_each类型的语法。
    [id(DISPID_NEWENUM), propget] HRESULT _NewEnum([out, retval] IUnknown** ppUnk);

    //获得某一个对象。Index:索引值,以0开始;返回值:IWizMeta对象
    [id(DISPID_VALUE), propget] HRESULT Item([in] long Index, [out, retval] IDispatch** pVal);

    //获得集合内元素的数量
    [id(1), propget] HRESULT Count([out, retval] long * pVal);
};

 
 
IWizMeta对象
 
[
    object,
    uuid(8FEE8441-A050-4CF7-99B6-4821DB945D80),
    dual,
    nonextensible,
    helpstring("IWizMeta Interface"),
    pointer_default(unique)
]
interface IWizMeta : IDispatch{

    //获得meta的名称,类似于ini文件里面的Section名称
    [propget, id(1), helpstring("property Name")] HRESULT Name([out, retval] BSTR* pVal);

    //获得meta的key,类似于ini文件里面的key
    [propget, id(2), helpstring("property Key")] HRESULT Key([out, retval] BSTR* pVal);

    //获得/设置meta的值
    [propget, id(3), helpstring("property Value")] HRESULT Value([out, retval] BSTR* pVal);
    [propput, id(3), helpstring("property Value")] HRESULT Value([in] BSTR newVal);

    //获得meta的修改时间
    [propget, id(4), helpstring("property DateModified")] HRESULT DateModified([out, retval] DATE* pVal);

    //删除meta
    [id(5), helpstring("method Delete")] HRESULT Delete(void);
};


分类: Wiz, Wiz二次开发 标签:
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

Spam Protection by WP-SpamFree