首页 > CyberArticle二次开发手册 > CyberArticle二次开发手册 – 2、CyberArticle COM对象

CyberArticle二次开发手册 – 2、CyberArticle COM对象


要对CyberArticle进行二次开发,主要的方式,就是通过调用COM对象,而二次开发的核心内容,也就是COM对象的使用。

CyberArticle的COM对象主要分为以下几类:

1、书籍和节点相关的对象

CyberArticle的数据,都保存在书籍中,而书籍里面的基本元素就是节点。

  • 书籍:ICABook
  • 节点:ICANode
  • 文章:ICAArticle

通过ICABook,可以打开,关闭一个书籍,或者获得书籍里面的节点等信息。

ICANode是书籍里面的节点。文件夹,文章,统一称为节点。无论是文件夹,还是文章,都是一个节点。通过ICANode的相关信息,可以获得节点的信息,例如类型,标题等等。

ICAArticle则是文章节点所包含的文章数据对象。通过ICAArticle,可以将文章保存成HTML文件,或者更新一个文章等等。通过ICANode可以获得ICAArticle。

其他相关对象:

  • ICALabel:标签
  • ICAAttachment:附件
  • ICAArticleResource:文章资源。CyberArticle文章是一个HTML文件。HTML文件不但有HTML代码本身,还包括里面引用的CSS,图片,Flash等等资源。
  • ICAProfile:用来保存文章的配置文件,可以设置是否包含图片,包含脚本等等。
  • ICABookmark:书签。一个书签可以代表一个书签文件夹或者一篇文章
  • ICAIcon:图标。书籍内的自定义图标。
  • ICACommand:保存网页的命令。
  • ICADatabase:CyberArticle数据库对象
  • ICADBError:CyberArticle数据库操作错误对象
  • ICANodeHistory:结点历史纪录对象

2、集合对象

通常节点,书籍等等,都可能需要一个类似数组的集合,例如获得一个文件夹下面的文章,就需要一个集合。CyberArticle里面,对象的集合,都是ICAXXXCollection这样的对象。

  • ICABookCollection:书籍集合
  • ICANodeCollection:节点集合
  • ICALabelCollection:标签集合
  • ICAAttachmentCollection:附件集合
  • ICAArticleResourceCollection:文章资源集合
  • ICAProfileCollection:配置文件集合
  • ICABookmarkCollection:书签集合
  • ICAIconCollection:图标集合
  • ICANodeHistoryCollection:节点历史数据集合

每一个Collection对象,都至少具有以下两个属性:

    [propget, id(1), helpstring("property Count")] HRESULT Count([out, retval] LONG* pVal); 
    [propget, id(2), helpstring("property Item")] HRESULT Item([in] LONG nIndex, [out, retval] IDispatch** pVal);
  • 属性Count:返回集合的元素数量。
  • 属性Item:获得某一个元素。

下面是一个使用的例子:

C++ 例子

ICANodeCollection* pNodeCollection(pDisp);
//
long nCount = 0;
pNodeCollection->get_Count(&nCount);//获得节点数量
//
for (long i = 0; i < nCount; i++)
{
    CComPtr<IDispatch> spDispNode = NULL;
    if (FAILED(pNodeCollection->get_Item(i, &spDispNode)))//获得一个节点
        continue;
    //
    CComQIPtr<ICANode> spNode(spNodeDisp);//转换为ICANode
    //
    CComBSTR bstrTitle;
    spNode->get_Title(&bstrTitle);//获得标题
    AfxMessageBox(CString(bstrTitle));//显示标题
}

VBScript 例子

For i = 0 To objNodeCollection.Count - 1 Step 1
    Dim objNode
    Set objNode = objNodeCollection.item(i)
    MsgBox(objNode.Title)
Next

JavaScript例子

objBook.Open(guidBook);
var childNodes = objBook.RootNode.Children;
for (var i = 0; i < childNodes.Count; i++)
{
   jsAlert(childNodes.Item(i).Title);
}

3、UI相关对象

  • ICABookTools:书籍工具,可以显示创建/打开书籍对话框等等
  • ICACommonUI:通用UI,可以显示书籍,节点属性等对话框。
  • ICAHelper:可以用来在IE里面保存网页,并显示保存网页对话框
  • ICAContextMenu:IE右键菜单
  • ICAToolButton:IE工具栏按钮
  • ICAImportHTML,ICAImportHTMLData,ICAImportHTMLDataCollection:用来批量导入文件

4、CyberArticle用户交互

  • ICAAutomationApp:可以获得正在正在运行的CyberArticle的一些相关信息,例如用户正在打开的文章,选中的节点等等。

5、BookBuilder批量下载保存网页

  • ICABookBuilderAutomationApp:可以调用BookBuilder,批量下载网页。

6、通用对象,和CyberArticle没有关系,可以在任何地方使用

  • IWizBubbleWnd:一个消息框,通常用来显示一个信息。如果用户没有操作,一段时间后,自动消失
  • IWizURLDownloader:可以用来下载文件并获得下载后的文件
  • IWizProgressWnd:一个进度对话框
  • IWizRtf2Html:RTF2HTML,将RTF转换为HTML
  • IWizMessageBoxWnd:一个消息对话框,可以显示“不再提示”复选框。
  • IWizCommonUI:可以显示一些常用的对话框,例如输入文字对话框等等。
  • IWizMimeMessage:用来打开,保存,转换mime文件的工具。

以上这些,就是CyberArticle公开的COM对象。这些COM对象,全部都可以通过脚本语言(JsvaScript/VBScript),高级语言(C/C++/Delphi),.NET语言(C#/VB.NET)等等调用,只要这些语言支持COM自动化技术即可。

CyberArticle,也可以看作一个Shell程序,通过调用这些对象,来实现某些特定的功能。


  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.

Spam Protection by WP-SpamFree