IBaiduDSComponentRegister
该接口可以用来注册或卸载一个插件,插件只能在注册之后才能被百度硬盘搜索所识别,并调用和接收该插件发送的数据。任何插件在不被使用之后,都应当调用该接口的UnregisterComponent方法卸载。
RegisterComponent 方法
注册用户插件。
语法
HRESULT RegisterComponent(
[in] BSTR bsGuidORProgid,
[in] VARIANT vDescription,
[out,retval] IBaiduDSComponentRegistration **ppRegistration);
参数
bsGuidORProgid
插件的GUID或者ProgID。
vDescription
包含1个SAFEARRY的VARIANT,这个SAFEARRY包含了若干个元素对,存放格式为:<属性名称><属性值><属性名称><属性值>……目前支持的属性包括:Title(插件的名称,显示在配置页面上)、Description(插件的简要描述,显示在配置页面上,用户可以在描述中加入html的链接标签以链接到自己的网站,例如:<a href=”http://www.baidu.com”> 更多信息</a>)、ICON(该类型文档的图标,应用于检索结果页面,格式如下:%systemroot%/windows/system32/notepad.exe,2)。
ppRegistration
返回的IBaiduDSComponentRegistration指针,如果该参数为NULL,则不返回任何信息。
返回值
假如成功返回S_OK,失败返回E_FAIL。
E_COMPONENT_ALREADY_REGISTERED 插件已被注册。
UnregisterComponent 方法
卸载用户插件。
语法
HRESULT UnregisterComponent(
[in] BSTR bsGuidORProgid);
参数
bsGuidORProgid
插件的GUID或者ProgID。
返回值
假如成功返回S_OK,失败返回E_FAIL。
IBaiduDSComponentRegistration
如果插件用来处理本地硬盘上的某一类型文件,则需要调用该接口注册感兴趣的文件类型。
RegisterExtension 方法
注册要处理的文件类型
语法
HRESULT RegisterExtension(
[in] BSTR bsExt);
参数
bsExt
插件要处理的文件后缀(例如:.txt .exe .jpg等),文件后缀对大小写不敏感。
返回值
假如成功返回S_OK,失败返回E_FAIL,返回E_EXTENSION_REGISTERED表示后缀已经被其它插件所注册。
注意
同一个插件可以同时注册多个文件后缀,也就是说同一个插件可以处理若干种类型的文件。
IBaiduDSEventFactory
用来产生Event对象的Factory接口
CreateEvent 方法
创造Event对象
语法
HRESULT CreateEvent(
[in] BSTR bsGuidORProgID,
[in] BSTR bsEventName,
[out, retval] IDispatch **ppEvent);
参数
bsGuidORProgID
插件注册时使用的CLSID。
bsEventName
使用的事件类型。
ppEvent
用来接收返回的Event对象。
返回值
假如成功返回S_OK,失败返回E_FAIL。
E_COMPONENT_NOT_REGISTERED 插件没有被注册。
E_COMPONENT_DISABLED 当前插件已经被用户禁止使用。
E_NO_SUCH_EVENT 没有该类型的Event。
IBaiduDSEvent
数据保存、发送接口。
AddProperty 方法
增加属性信息。
语法
HRESULT AddProperty(
BSTR name,
VARIANT value,
long lCodePage,
long lFlag);
参数
name
属性名称
value
属性值
lCodePage
传递数据的编码类型,0为未知。所有的编码定义采用Micrsooft Code-Page 定义。
lFlag
属性的标志信息
返回值
假如成功返回S_OK,失败返回E_FAIL。
E_EVENT_CONTENT_FORMAT_FIRST 添加content属性前,应该指定content的格式。
E_EVENT_TOO_MANY_PROPERTY 添加的属性过多。目前最多支持64项。
E_EVENT_PROPERTY_ALREADY_EXIST 添加的属性已经存在。
E_EVENT_INVALID_PROPERTY 属性信息值无效。
E_EVENT_PROPERTY_TOO_LARGE 属性信息过大。
E_UNKONWN_CODEPAGE 未知代码页。
Send 方法
发送信息到百度硬盘搜索。
语法
HRESULT Send(
long event_flags);
返回值
假如成功返回S_OK,失败返回E_FAIL。
E_SERVICE_NOT_RUNNING 百度硬盘搜索没有启动。
E_NOT_COMPLETE_EVENT 一些必要的属性信息没有被填充。
DBaiduDSFileNotify(纯IDispatch接口)
这个接口由用户插件来实现,它用来接收并处理来自百度硬盘搜索的文件事件(发现或改变)。
HandleFile 方法
语法
HRESULT HandleFile(
[in] BSTR bsFile,
[in] IDispatch* pEventFactory);
参数
bsFile
需要处理的文件全路径
pEventFactory
由百度硬盘搜索传递的IBaiduDSEventFactory指针,用来生成Event对象。
返回值
假如成功返回S_OK,失败返回E_FAIL。