如何提取 OLE 容器的内容?

2024-02-27

我需要打开 MS Word 文件 (.doc) 并提取其组成文件(“[1]CompObj”、“WordDocument”等)。像 7-zip 这样的东西可以用来手动执行此操作,但我需要以编程方式执行此操作。

我发现 Word 文档是一个 OLE 容器(因此可以使用 7-zip 查看其内容),但我不知道如何(使用 C++):

  1. 打开OLE容器
  2. 提取每个组成文件并将其保存到磁盘

我发现了几个 OLE 自动化的例子(例如here http://www.codeproject.com/KB/office/MSOfficeAuto.aspx)但我想做的似乎不太常见,而且我没有找到具体的例子。

如果有人对使用 OLE 的 API(?!)和教程有任何想法,我将不胜感激。任何代码示例也是如此。


它称为复合文件,是结构化存储 API 的一部分。您从 StgOpenStorageEx() 开始。对于 Word .doc 文件来说,它的成本很低,流本身具有复杂的二进制格式。到really读取文档内容要使用自动化,让Word读取文件。这在 C++ 中很少实现,但该项目向您展示了如何实现。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何提取 OLE 容器的内容? 的相关文章

  • 何时使用 =default 使析构函数默认?

    尽管对构造函数使用 default 对我来说很清楚 即强制编译器在其他构造函数存在时创建默认构造函数 但我仍然无法理解这两种类型的析构函数之间的区别 那些使用 default 的 那些没有显式定义并由编译器自动生成的 我唯一想到的是 gro
  • 为什么在创建矩阵类时使用向量不好?

    对于我的矩阵类 我做了 template
  • 防止 boost::asio::io_context 在空轮询调用时停止

    此代码调用发布的句柄 boost asio io context ioc boost asio post ioc std cout lt lt lol lt lt std endl ioc poll 而这并没有 boost asio io
  • GCC 和 ld 找不到导出的符号...但它们在那里

    我有一个 C 库和一个 C 应用程序 尝试使用从该库导出的函数和类 该库构建良好 应用程序可以编译 但无法链接 我得到的错误遵循以下形式 app source file cpp text 0x2fdb 对 lib namespace Get
  • fprintf() 线程安全吗?

    我正在为野人就餐问题的某些变量编写一个 C 解决方案 现在 我创建线程 每个线程都将 FILE 获取到同一个调试文件 在线程内我正在使用 fprintf 进行一些打印 打印的语句不受任何类型的互斥锁等保护 我没有在调试文件中观察到任何交错行
  • 如何在 QTabWidget Qt 中展开选项卡

    我有一个QTabWidget像这个 但我想展开选项卡以 填充 整个小部件宽度 如下所示 我怎样才能做到这一点 我在用Qt 5 3 2 and Qt 创建者 3 2 1 Update 我尝试使用setExpanding功能 ui gt myT
  • Visual Studio Code:如何配置 includePath 以获得更好的 IntelliSense 结果

    我是使用 Visual Studio Code 的完全初学者 我不知道我在做什么 我已经四处搜索 也许还不够 但我找不到像我这样的人如何配置的简单解释c cpp properties json每当我单击带有绿色波浪线下划线的行旁边的黄色灯泡
  • 如何从文本文件读取整数到数组

    这就是我想做的 我对此有些不满 但我希望你能容忍我 这对我来说是一个非常新的概念 1 在我的程序中 我希望创建一个包含 50 个整数的数组来保存来自文件的数据 我的程序必须获取用户的文档文件夹的路径 2 文件的名称为 grades txt
  • 如何在服务器端按钮点击时关闭当前标签页?

    我尝试在确认后关闭当前选项卡 因此我将以下代码放在确认按钮的末尾 但选项卡没有关闭 string jScript ClientScript RegisterClientScriptBlock this GetType keyClientBl
  • C++ php 和静态库

    我创建了一个library a 其中包含 cpp 和 h 文件 其中包含很多类 嵌套类和方法 我想在 php 示例中包含这个静态库并尝试使用它 我想提一下 我是 php 新手 我已经在 test cpp 文件中测试了我的 libray a
  • 检查 RoutedEvent 是否有任何处理程序

    我有一个自定义 Button 类 当单击它时 打开特定窗口 它总是执行相同的操作 我添加了一个可以在按钮的 XAML 中分配的 Click 事件 就像常规按钮一样 当它被单击时 我想执行 Click 事件处理程序 如果已分配 否则我想执行默
  • AES 输出是否小于输入?

    我想加密一个字符串并将其嵌入到 URL 中 因此我想确保加密的输出不大于输入 AES 是可行的方法吗 不可能创建任何始终会创建比输入更小的输出的算法 但可以将任何输出反转回输入 如果您允许 不大于输入 那么基本上您只是在谈论同构算法alwa
  • 每个租户的唯一用户名和电子邮件

    我正在使用以下代码编写多租户应用程序ASP NET Core 2 1 我想覆盖默认的与用户创建相关的验证机制 目前我无法创建多个具有相同的用户UserName My ApplicationUser模型有一个名为TenantID 我想要实现的
  • C# 中的 strstr() 等效项

    我有两个byte 我想找到第二个的第一次出现byte 在第一个byte 或其中的一个范围 我不想使用字符串来提高效率 翻译第一个byte to a string会效率低下 基本上我相信就是这样strstr 在 C 中做 最好的方法是什么 这
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • 如何在 DropDownList 中保留空格 - ASP.net MVC Razor 视图

    我在视图中通过以下方式绑定我的模型 问题是我的项目文本是格式化文本 单词之间有空格 如下所示 123 First 234 00 123 AnotherItem 234 00 123 Second 234 00 我想保留此项目文本中的空格 即
  • 将 char[][] 转换为 char** 会导致段错误吗?

    好吧 我的 C 有点生疏了 但我想我应该用 C 来做我的下一个 小 项目 这样我就可以对其进行抛光 并且我已经有不到 20 行的段错误了 这是我的完整代码 define ROWS 4 define COLS 4 char main map
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959

随机推荐

  • Windows 10:获得远程访问权限后,以 .\Administrator 身份远程启动 Quick Assist,无需 UAC,或暂时禁用 UAC

    我想要a script在这种情况下使用 无需管理员权限即可获得远程访问 远程启动快速协助 Administrator and not进行 UAC 对话 第 1 步通常通过 Quick Assist 完成 有时通过 Teams 屏幕共享完成
  • 通过脚本在 Microsoft 集群中创建专用 MSMQ 队列

    我们正在迁移到 Windows 2008 R2 Standard 并将使用 Microsoft 集群 主动 被动 配置 我们的应用程序严重依赖于 MSMQ 专用队列 并且我们的安装使用以下 C 代码创建了 100 多个专用队列 Messag
  • Java ReDos 是否容易受到攻击?

    我尝试重新创建正则表达式拒绝服务攻击 https en wikipedia org wiki ReDoS using a 正则表达式和aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa 含有大量的a 使用js
  • Angularjs:ngRepeat 和指令

    我正在尝试制作一些可重复使用的倒计时小部件 与静态内容配合得很好 但是当我尝试动态添加它们时 我的指令不理解 ngRepeat 内的变量 Markups div class countdown p days jours hours heur
  • 使用两个嵌套 iframe 时防止打开新选项卡

    大家好 stackoverflow 的朋友们 我在这里遇到了一个问题 我给了一个iframe向其他人提供代码以将其嵌入到他的网站上 这是代码iframe 以上iframe包含以下内容html some html code
  • Service Worker 在浏览器离线时保存表单数据

    我是 Service Workers 的新手 并且已经浏览了各种文档 Google https developers google com web fundamentals getting started primers service w
  • 无法使用JDK1.8.0_92编译JSP文件

    我们有一个在 JBoss 6 1 上运行的旧版 JavaEE 应用程序 当使用 Java 1 8 0 92 运行 JBoss6 时 我们收到以下错误 请帮助我解决此错误或给出一些提示 16 49 32 888 ERROR org apach
  • 在使用 FromEventPattern 订阅之前捕获事件

    我正在使用 Rx 框架编写消息监听器 我面临的问题是 我正在使用的库使用一个消费者 每当消息到达时就会发布事件 我已经设法通过以下方式消费传入的消息Observable FromEventPattern但我对服务器中已有的消息有疑问 目前我
  • XML 模式:用相应的模式替换导入

    我有一个 XML 架构 其中包含多个导入 而这些导入又包含多个导入 我需要生成语义上相等的模式 其中所有导入都是内联的 我想替换这些
  • 使用按位运算符的算术运算符[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 有没有办法通过使用执行加法 或算术运
  • 自动最大化图形

    我正在 MATLAB 中创建一些图形并自动将它们保存到文件中 问题是根据定义图像很小 手动解决我的问题的一个好方法是创建一个图像 图形 将其最大化 然后保存到文件中 我错过了自动最大化数字的这一步 有什么建议么 到目前为止我只发现了这个 h
  • 支持带电话功能和不带电话功能的 Android 设备

    我有一个应用程序可以在具有电话功能和不具有电话功能的设备上运行 以下是我的一些疑问 1 我能够支持这两种类型的设备吗 2 对于具有电话功能的设备 我需要启用通话功能 对于没有电话功能的设备 我将禁用通话功能 我不太清楚 和 概念 有没有办法
  • 强制 Grails/Weblogic 仅使用 HTTPS 协议进行重定向

    我在项目中使用 Grails 2 2 2 并且我的应用程序发出不需要的 http 重定向而不是 https 重定向 目前 我们在 Oracle Weblogic 前面有一个 F5 负载均衡器 F5 正在从 Weblogic 卸载我们的 SS
  • Swift 支持静态类吗?

    我想知道您是否可以在 swift 中创建类似于 C 中的静态类 即无法实例化的类 只能具有静态函数和静态属性 这些类型的课程可以快速实现吗 如果没有 考虑到 Swift 中可用的工具 重新创建这种设计模式的最有效方法是什么 不 Swift
  • HBase:使用Java API创建表时指定版本

    我知道我们可以通过以下方式从 hbase shell 执行此操作 create t1 NAME gt f1 VERSIONS gt 5 我在中找不到任何相应的选项HTableDesctiptor在 Java API 中 知道如何做到这一点吗
  • 错误:无法统计文件“XX.csv”:未知错误

    我运行这个命令 COPY XXX FROM D XXX csv WITH FORMAT CSV HEADER TRUE NULL NULL 在Windows 7中 它可以成功导入小于1GB的CSV文件 如果文件大于 1GB 我会收到 未知错
  • 数据结构,C#:~O(1) 使用范围键查找?

    我有一个数据集 该数据集将提供一个查找表 给定一个数字 我应该能够查找该数字的相应值 不过 数据集 假设是 CSV 有一些注意事项 代替 1 ABC 2 XYZ 3 LMN 这些数字是范围 是 通过 而不是负数 1 3 ABC 1 2 an
  • 从 swift 3 迁移到 swift 4 - 无法将 String 转换为预期的 String.Element

    我正在将代码从 swift 3 转换为 swift 4 并在以下代码中收到此错误 即使当我尝试使用 flatmap 展平数组时我也会得到这个 无法将 String 类型的值转换为预期的参数类型 String Element 又名 字符 if
  • 将日期中的月份日期更改为第一天 (01)

    我想将月份中的某一天设置为Date到当月的开始日期 01 现在我使用以下内容 currentDate lt Sys Date for getting current system date eg 2012 11 06 formatDate
  • 如何提取 OLE 容器的内容?

    我需要打开 MS Word 文件 doc 并提取其组成文件 1 CompObj WordDocument 等 像 7 zip 这样的东西可以用来手动执行此操作 但我需要以编程方式执行此操作 我发现 Word 文档是一个 OLE 容器 因此可