本节是对《基于Ifilter接口的文档解析》的补充,根据loadfilter的原理重写该函数,重写后不需要安装office软件,只需取出相应的ifilter组件,通过自行进行注册表注册就可以了。
LoadFilter的流程如下(以.pdf为例,打开注册表):
1. 在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ 找到.pdf, .pdf中子键PersistentHandler 值为{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}
2. 在HKEY_LOCAL_MACHINE\SOFTWARE\CLSID中查找{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}, 找到含有PersistentAddinsRegistered的结点,PersistentAddinsRegistered含有结点{89BCB740-6119-101A-BCB7-00DD010655AF}。
{89BCB740-6119-101A-BCB7-00DD010655AF} 为Ifilter接口的GUID, 取出该结点的值{E8978DA6-047F-4E3D-9C78-CDBE46041603}。
3. 在HKEY_LOCAL_MACHINE\SOFTWARE\CLSID查找{E8978DA6-047F-4E3D-9C78-CDBE46041603}结点, 该结点中子节点InprocServer32的默认值即为PDF ifilter DLL的地址。
4. 后续任务就是对该DLL进行注册和 load,详见http://www.codeproject.com/Articles/13391/Using-IFil
1. 在HKEY_LOCAL_MACHINE\SOFTWARE\Classes\ 找到.pdf, .pdf中子键PersistentHandler 值为{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}
2. 在HKEY_LOCAL_MACHINE\SOFTWARE\CLSID中查找{F6594A6D-D57F-4EFD-B2C3-DCD9779E382E}, 找到含有PersistentAddinsRegistered的结点,PersistentAddinsRegistered含有结点{89BCB740-6119-101A-BCB7-00DD010655AF}。
{89BCB740-6119-101A-BCB7-00DD010655AF} 为Ifilter接口的GUID, 取出该结点的值{E8978DA6-047F-4E3D-9C78-CDBE46041603}。
3. 在HKEY_LOCAL_MACHINE\SOFTWARE\CLSID查找{E8978DA6-047F-4E3D-9C78-CDBE46041603}结点, 该结点中子节点InprocServer32的默认值即为PDF ifilter DLL的地址。
4. 后续任务就是对该DLL进行注册和 load,详见http://www.codeproject.com/Articles/13391/Using-IFil