CyberArticle普通插件

CyberArticle普通插件需要实现一个或者多个接口。
 
必须实现的接口:ICAPlugin
 
对于用来编辑文章的插件,还可以实现接口:ICAEditPlugin (非必须)

注册普通插件

当您完成COM组件编写后,您还需要注册您的COM组件。除了标准的COM组件注册外,还需要在注册表的某些位置,写入一些数据,来告诉CyberArticle,有这样一个CyberArticle普通插件。
 
CyberArticle普通插件注册位置:
    HKEY_CURRENT_USER\Software\Wizissoft\CyberArticle\Plugins\Normal  (仅对当前windows用户有效)
或者
    HKEY_LOCAL_MACHINE\Software\Wizissoft\CyberArticle\Plugins\Normal(对当前电脑的所有用户有效)
 
导出插件组件需要在上面的注册表位置下面,创建一个新的KEY,KEY的名称是COM组件的Class ID (CLSID),在这个KEY下面,默认的value是该插件的描述。
下图就是一个典型的例子:
 
 
在卸载插件的时候,需要将相应的注册表项,从注册表中删除。
 
如果您使用C++编写插件,可以使用CyberArticlePluginHelper.h文件里面的函数注册一个CyberArticle普通插件,例如:
 
#include "C:/Program Files/Wizissoft/CyberArticle/developers/interface/include/CyberArticlePluginHelper.h"
...

// DllRegisterServer - Adds entries to the system registry
STDAPI DllRegisterServer(void)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    _AtlModule.UpdateRegistryAppId(TRUE);
    HRESULT hRes2 = _AtlModule.RegisterServer(TRUE);
    if (hRes2 != S_OK)
        return hRes2;
    if (!COleObjectFactory::UpdateRegistryAll(TRUE))
        return ResultFromScode(SELFREG_E_CLASS);
    //
    //注册CyberArticle插件
    CyberArticleRegisterPlugin(CLSID_CACombineNodesPlugin, IDS_COMBINE_NODES);
    //
    return S_OK;
}

// DllUnregisterServer - Removes entries from the system registry
STDAPI DllUnregisterServer(void)
{
    AFX_MANAGE_STATE(AfxGetStaticModuleState());
    //
    //卸载CyberArticle插件
    CyberArticleUnregisterPlugin(CLSID_CACombineNodesPlugin);
    //
    _AtlModule.UpdateRegistryAppId(FALSE);
    HRESULT hRes2 = _AtlModule.UnregisterServer(TRUE);
    if (hRes2 != S_OK)
        return hRes2;
    if (!COleObjectFactory::UpdateRegistryAll(FALSE))
        return ResultFromScode(SELFREG_E_CLASS);
    return S_OK;
}