从hdd ole二进制文件中提取对象

时间:2012-09-04 20:01:12

标签: c extract ole lotus

我遇到了Lotus Notes文档中嵌入的OLE对象的特定问题。

用户已附上f.e. Word或Excel文档作为OLE对象(在Lotus Notes文档中),我需要从OLE中获取这些原始文档作为可在其主机应用程序中打开的文件附件。

使用Lotus Notes C API我设法将OLE对象分离到HDD。 麻烦的是,Word文档嵌套在目录Word.Document.8或Word.Document.12中的OLE二进制文件中。只是将OLE二进制文件重命名为doc或docx不起作用。

这就是为什么我编写了读取二进制文件并提取文档的Java OLE包。 这有效,但......有一个缺点。

我必须解析OLE类名,如果它是Word.Document.8我需要编写代码,手动从word.document.8目录中提取所有流并将它们保存为新的.doc OLE对象以便Word正确地打开它。

这对于Office文档来说并不难,但是所有类型的东西都可以嵌入到OLE中,我无法涵盖所有​​可能性。

是否有可以从OLE二进制文件中提取嵌入对象的C api函数(原始文件名不重要,但扩展名是)? 双击OLE对象时,Lotus或Word如何执行? 它必须以某种方式重建嵌入式文档? 我想以同样的方式做到: - )

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

尝试自动化Notes将嵌入对象复制到剪贴板,然后从剪贴板获取CF_EMBEDDEDOBJECT格式,这类似于如何将OLE项目拖动到Windows资源管理器以创建剪贴文件。

参考文献&有用的页面:

[CiteHistory Record]

答案 1 :(得分:0)

为了在C API中提取文件,我将看看NSFNoteCipherExtractFile函数(和NSFNoteCipherDecrypt)。如果使用8.x或更高版本。