CyberArticle导入插件CyberArticle导入插件是一个COM组件,该组件必须支持自动化技术(实现IDispatch)。CyberArticle通过IDispatch接口来调用相应的方法,来导入文件。 COM对象需要的属性:
COM对象需要的方法:
下面是一个比较典型的idl文件片断 interface ICAImportImage : IDispatch{ [propget, id(1), helpstring("property PluginFlags")] HRESULT PluginFlags([out, retval] LONG* pVal); [propput, id(2), helpstring("property ImportFlags")] HRESULT ImportFlags([in] LONG newVal); [id(3), helpstring("method Accept")] HRESULT Accept([in] BSTR bstrFileName, [out,retval] VARIANT_BOOL* pbAccept); [id(4), helpstring("method Import")] HRESULT Import([in] BSTR bstrFileName, [in] IDispatch* pParentNodeDisp, [out,retval] VARIANT_BOOL* pbSucceeded); }; 注册导入插件当您完成COM组件编写后,您还需要注册您的COM组件。除了标准的COM组件注册外,还需要在注册表的某些位置,写入一些数据,来告诉CyberArticle,有这样一个CyberArticle导入插件。
CyberArticle导入插件注册位置:
HKEY_CURRENT_USER\Software\Wizissoft\CyberArticle\Plugins\Import
(仅对当前windows用户有效)
或者
HKEY_LOCAL_MACHINE\Software\Wizissoft\CyberArticle\Plugins\Import
(对当前电脑的所有用户有效)
导出插件组件需要在上面的注册表位置下面,创建一个新的KEY,KEY的名称是COM组件的Class ID
(CLSID),在这个KEY下面,默认的value是该插件的描述。
下图就是一个典型的例子:
在卸载插件的时候,需要将相应的注册表项,从注册表中删除。
如果您使用C++编写插件,可以使用CyberArticleImportPluginHelper.h文件里面的函数注册一个CyberArticle导入插件,例如: #include "C:/Program Files/Wizissoft/CyberArticle/developers/interface/include/CyberArticleImportPluginHelper.h" ... // DllRegisterServer - Adds entries to the system registry STDAPI DllRegisterServer(void) { // registers object, typelib and all interfaces in typelib HRESULT hr = _AtlModule.DllRegisterServer(); if (SUCCEEDED(hr)) { /* *注册CyberArticle导入插件 */ CyberArticleRegisterImportPlugin(CLSID_CAImportImage, IDS_IMPORT_IMAGE); } return hr; } // DllUnregisterServer - Removes entries from the system registry STDAPI DllUnregisterServer(void) { /* *卸载CyberArticle导入插件 */ CyberArticleUnregisterImportPlugin(CLSID_CAImportImage); // HRESULT hr = _AtlModule.DllUnregisterServer(); return hr; } |
|||||||||||||||||||||||||||||||||||||||||||
|