在主 chm 文件窗口中打开合并 chm 文件中的主题

2024-04-27

我想在主 chm 文件窗口中打开合并 chm 文件中的主题。 我有应用程序帮助的主要 chm 文件。所以这个主 chm 文件包含子 chm 文件。我想通过调用 htmlhelp 函数在主 chm 文件的窗口中打开子(合并)chm 文件中的主题。

以下是chm主项目中的头文件。其中operation\ACORD_geometry.chm是合并的chm文件。现在我正在使用 Adob​​e robohelp。

[ALIAS]
  IDH_operation_geometry=operation\ACORD_geometry.chm:\HID_geometrytab_functions.htm

[MAP]
  #define IDH_operation_geometry    9001

我通过以下方式调用 htmlhelp 函数。但话题打不开。 .\help\3DFEMGeo.chm 是主 chm 文件。

HtmlHelp(Application.Handle, '.\help\3DFEMGeo.chm', HH_HELP_CONTEXT, 9001);

请教我如何在子chm中打开主题。


通过合并多个帮助项目的索引和目录来创建模块化帮助系统有一些好处,但有时克服障碍很困难。以下说明的某些部分是 Sean Stagmer 多年前发布的。有关上下文相关的帮助,另请参阅底部的内容和链接:

http://www.help-info.de/en/Help_Info_HTMLHelp/hh_context-id.htm http://www.help-info.de/en/Help_Info_HTMLHelp/hh_context-id.htm

长话短说(HTH - 请根据您的需求和环境尝试):

// *** BEGIN CODE SNIPPET
...
HID_TOPIC_ID1="ms-its:Master.chm::/SubHelpSubject1.chm::/Topic_1.htm#Topic1"
HID_TOPIC_ID2="ms-its:Master.chm::/SubHelpSubject2.chm::/Topic_2.htm#Topic2"
...
// *** END CODE SNIPPET

还有故事长版:

RoboHelp 例如和许多其他帮助创作工具 (HAT) 都是利用 Microsoft HTML 帮助编译器 (hhw.exe) 的 IDE 前端。 RoboHelp 旧版本的设计者在分离构建 HTML 编译帮助文件的技术方面做得非常好,但遗漏了直接使用底层工具时可用的几个功能。 具体来说,是模块化帮助。我假设大多数研究此主题的人都了解了如何将以下内容添加到他们的帮助项目文件(.hhp)中以开始设计模块化 HTML 帮助系统:

// *** BEGIN CODE SNIPPET
[MERGE FILES]
SubHelpSubject1.chm
SubHelpSubject2.chm
...
// *** END CODE SNIPPET

现在,在模块化设计中解决上下文相关帮助和合并文件的问题增加了一个新的转折:如何将主题 ID 映射到适当的合并 HTML 文件?由于是模块化的,主题 ID 不在主/主机帮助文件中,而是通过合并的子帮助项目的 .chm 文件集成到其中。这是通过将以下代码放置在主控/主机主控的 TOC 文件中来完成的:

// *** BEGIN CODE SNIPPET
...
<LI>
<OBJECT type="text/sitemap">
  <param name="Name" value="SubHelpSubject1">
</OBJECT>
<OBJECT type="text/sitemap">
  <param name="Merge" value="SubHelpSubject1.chm::\SubHelpSubject1.hhc">
</OBJECT>
<LI>
<OBJECT type="text/sitemap">
  <param name="Name" value="SubHelpSubject2">
</OBJECT>
<OBJECT type="text/sitemap">
  <param name="Merge" value="SubHelpSubject2.chm::\SubHelpSubject2.hhc">
</OBJECT>
...
// *** END CODE SNIPPET

通过这两个添加(MERGE FILES 语句和 TOC 文件的添加),主题 ID 到其帮助主题信息的正确解析已完成,除非您注意到 HTML 帮助窗口仅显示子帮助项目的 TOC它映射到!主/主机目录根本不显示。是什么赋予了?

答案在于主/宿主项目的别名文件。作为一名优秀的 HTML 帮助内容开发人员,您知道通过修改简单的别名语法将感兴趣的主题 ID 映射到适当的子帮助文件,如下所示:

// *** BEGIN CODE SNIPPET
...
HID_TOPIC_ID1=Topic_1.htm
HID_TOPIC_ID2=Topic_2.htm
...
// *** END CODE SNIPPET

...对此:

// *** BEGIN CODE SNIPPET
...
HID_TOPIC_ID1="ms-its:SubHelpSubject1.chm::/Topic_1.htm#Topic1"
HID_TOPIC_ID2="ms-its:SubHelpSubject2.chm::/Topic_2.htm#Topic2"
...
// *** END CODE SNIPPET

这个小小的“ms-its:”非常类似于您在网络浏览器中输入的“http:”或“ftp:”文本:它被称为 Microsoft 的异步可插拔协议。它的 '::/' 部分是一个引用; C++ 术语中的一种“间接级别”或“引用别名”。因此,为了解决上下文相关帮助主题既映射到正确的帮助主题 html 文本又保持 TOC 与主文档同步的问题,您必须添加额外的间接级别才能使其正常工作,如下所示:

// *** BEGIN CODE SNIPPET
...
HID_TOPIC_ID1="ms-its:Master.chm::/SubHelpSubject1.chm::/Topic_1.htm#Topic1"
HID_TOPIC_ID2="ms-its:Master.chm::/SubHelpSubject2.chm::/Topic_2.htm#Topic2"
...
// *** END CODE SNIPPET

这可以理解为:“显示帮助主题 HID_TOPIC_ID1 信息时,打开 Master.chm,然后导航到 SubHelpSubject1.chm 的 HTML 文件 Topic_1.htm,然后向下移动页面到书签 Topic1。”

万岁!您的主题会弹出,主目录/主机目录也可见!

就像用 C++ 术语思考一样,别名文件看起来非常像我们在 C++ 类中引用功能的方式:

Result = BaseClass::SubClass1::Subclass2::DoFunctionCall();

附带说明一下,此语法正在被 XML 取代 - HTML 帮助将引用集合文件 (.col) 中指定的“集合”,其中包含 XML 条目。比别名文件中类似 PERL 的钝语法更容易阅读和遵循。

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

在主 chm 文件窗口中打开合并 chm 文件中的主题 的相关文章

  • chm打不开

    chm文件打开看不到右边的内容 1 操作系统为了安全对下载的chm文件进行了锁定 xff0c 只需要在打开前右键单击该chm文件选择 属性 xff0c 然后在 常规 选项卡的下方单击 解除锁定 按钮就可以了 2 如果还是不能看 xff0c
  • prototype.js开发者手册全集

    Prototype 是一个开源的 javascript 开发框架 里面封装了大量可以加快开发速度的方法 例如使用 div 代替getElementById div 封装了xmlhttprequest等 许多语言的开发框架如 Ruby on
  • 推荐书目

    深入理解计算机系统 原书第2版 作 者 美 Randal E Bryant David R O Hallaron 著 出 版 社 机械工业出版社 图书定价 99 00 准备看看 C C 从入门到高手所有必备PDF书籍收藏 喜欢的朋友支持下吧
  • 无需更改注册表 实现CHM文件从共享文件中直接打开

    直接上解决方法 无需更改注册表 将整个CHM文件压缩 在压缩文件中打开 chm文件 就可以正常显示相关内容 1 问题描述 压缩前 两台电脑 A是笔记本电脑 win10系统 B是台式电脑 win7系统 在A中设置了共享文件 并共享给了B CH
  • 如何在指定节点TOC(.NET)上打开CHM文件

    您好 我需要在 NET 应用程序中实现上下文帮助 我有 chm 文件 我正在寻找在标准查看器中打开它的可能性 并突出显示目录 或索引条目 所需的主题 知道如何存档吗 EDIT 也许用于打开 CHM 文件的 MS 应用程序有一些允许存档的命令
  • 如何在 Delphi XE 应用程序中使用 CHM HTML 帮助文件?

    Delphi 如何在 Delphi XE 应用程序中使用 CHM HTML 帮助文件 http edn embarcadero com article 27842文章介绍了如何使用 CHM 文件 我执行了那里描述的所有步骤 Added co
  • CHM 中的 SVG 图形(Html 帮助研讨会)

    我正在尝试在 CHM 文件中使用 SVG 图形 CHM 由 HTML Help Workshop 创建 不幸的是 svg 文件没有显示在我编译的 chm 中 在 Html 中一切正常 我已经将 SVG 添加到了 hhp 的文件部分 但还是什
  • CHM 的 hhc 文件转 html

    我创建了一个chm文件使用HTML Help workshop并且在 Windows 下运行良好 但是 那chm viewer用于Linux不太好 我不想用它Linux 我还被限制在 Linux 中使用任何其他查看器 于是我想到了反编译ch
  • 将帮助按钮添加到 InnoSetup 向导页面

    我有一个带有自定义向导页面的设置脚本 可以让用户进行选择 最好有一个帮助按钮并提供一个可安装的小型 CHM 文件 以便我可以提供有关选项的详细说明 有人知道是否有一种简单的方法可以做到这一点 See 这个帖子有关如何在安装包中包含文件并在安
  • 从帮助 ID 获取 CHM 详细信息

    我有帮助字符串 id 和一些 CHM 文件 通过帮助字符串 我想找到诸如 CHM 文件名 链接到该帮助 ID 的页面 该页面的描述 标题等详细信息 如果您有文件名和搜索条件 我有对多个 CHM 文件执行字符串搜索的所有代码 但我担心的是 只
  • chm 文件支持哪些 css 版本?

    我正在编写一个样式表以与我的编译帮助文件一起使用 看起来 CSS2 通常可以工作 但我不确定 CSS 选择器 例如 gt and CHM 格式是否等同于 IE 7 fwiw 我正在 Windows 7 上进行创作 并且安装了 IE9 在 W
  • chm hhk 中的关键字标签

    我目前正在检查 CHM 的二进制索引构建 但我注意到示例项目中的一些 hhk 例如生成的 Sphinx 有一个 关键字 标签 该标签似乎没有记录在chmspec http www nongnu org chmspec latest Site
  • 如何从 VC++ 2008 开发的 GUI 中打开帮助文件(chm 等)?

    我正在尝试为我在 VC 2008 中开发的 GUI 添加一些帮助 我想编译一个 chm 文件 或者一个可以从我的菜单访问的 hlp 文件 任何人都可以告诉我如何执行此操作吗 多谢 Under HKLM Software Microsoft
  • CHM 格式替代品?

    Microsoft CHM 格式非常有用 因为它提供了以下功能 带有树视图的目录 指数 索引搜索 基于 HTML 源 但这种格式已经过时并且有很多缺点 存在安全问题 允许执行 JavaScript 代码 不知道新的 HTML 格式 没有记录
  • 将工具提示与 Windows 应用程序中的 CHM 帮助集成

    我们正在尝试重新设计 Windows 桌面应用程序的文档流程 我们的两个要求是 以 CHM 格式提供 参考 帮助 提供有关各个控件的工具提示帮助 目前我们的工具提示被硬编码到 Delphi C Builder 表单中 但我理想情况下希望避免
  • WinForms:加载本地化帮助 (chm) 文件

    加载特定于区域设置 即已翻译 的已编译帮助文件 chm 的最佳方法是什么 我们的安装会将它们与包含资源的卫星程序集一起部署 我想重复使用 NET 框架用于加载卫星程序集的相同探测规则 并且我绝对希望避免编写自己的搜索算法 因为例如 我必须处
  • 重新编译CHM文件

    我正在编写一个脚本 该脚本应该能够向 chm file 反编译后使用hh exe decompile outputFolder fileName chm命令 我得到 html 文件和其他 2 个文件 hhc and hhk扩大 编辑 htm
  • 用java打开chm文件

    我想从我的 java 应用程序打开 CHM 帮助 文件 我的代码如下所示 Runtime getRuntime exec hh exe myhelpfile chm 可以用 但是如何用特定页面打开它 谢谢 汤姆 尝试这个 是否可以从 Hh
  • 在主 chm 文件窗口中打开合并 chm 文件中的主题

    我想在主 chm 文件窗口中打开合并 chm 文件中的主题 我有应用程序帮助的主要 chm 文件 所以这个主 chm 文件包含子 chm 文件 我想通过调用 htmlhelp 函数在主 chm 文件的窗口中打开子 合并 chm 文件中的主题
  • HTML 帮助关键字查找

    我无法弄清楚如何进行关键字查找 HH KEYWORD LOOKUP http msdn microsoft com en us library ms670091 VS 85 aspx 在 HTML 帮助中工作 如果我有一个显示如下的索引 M

随机推荐

  • 明确的追溯 .gitignore (如何让 Git 完全/追溯地*忘记*现在在 .gitignore 中的文件)

    Preface This question attempts to clear the confusion regarding applying gitignore retroactively not just to the present
  • 使用局部函数和全局函数哪个更优化?

    我想知道使用 a 是否更优化局部功能 在下面的例子中 drawBitmap 只需要3个参数 and 无法内联因为该函数访问一些所有者过程变量 或者使用可以内联的全局函数 但它真的会内联吗 这需要5个参数 也不知道这是否重要 但是这段代码主要
  • C# 析构函数未按预期工作

    请参阅下面的代码 我希望它打印 10 之一 因为我已经显式调用了垃圾收集器 但我总是得到 0 或 20 作为输出 这是为什么 void Main Panda forest panda new Panda 10 for int i 0 i
  • 将数据导入mysql的最佳方法

    我有一个包含 500 000 行和大约 10 列的表 该表处于访问状态 我如何将其导入到mysql 这是关于该主题的文章 http www kitebird com articles access migrate html http www
  • C# 判断一个数是否为无穷大

    我有一个小问题 我有两个双精度变量 每个变量的值为 1 10 250 现在 如果我将这两个值相乘 我会得到一个结果 它也是一个双精度变量 问题是乘法的结果给了我无穷大的值 但我想防止这种情况并给出错误消息 因此 如果有人知道如何识别数字是否
  • SQL 中的双冒号 `::` 表示法

    我捡到了某人的代码 以下是其中的一部分WHERE条款 这里的双冒号表示什么 b date completed gt a dc date INTERVAL 1 DAY 7 20 00 它根据 RDBMS 的不同而有所不同 但如果我猜对的话 那
  • 删除 rmarkdown 文档中的部分

    我希望将章节标题放在页眉而不是页面正文中 fancyhead C 将节标题放在标题中 但如何抑制节的正文打印 title Untitled classoption landscape output pdf document number s
  • 如何从 UIView 中仅删除用户添加的子视图

    我试图删除添加到视图中的所有子视图 因此我实现了一个循环来使用以下内容迭代子视图 for subview in view subviews println subview subview removeFromSuperview 我通过向我的
  • 如何在 Dart 中保存文本输入框中的值并稍后加载?

    来自邮件列表 如何创建某种文本输入框 以允许我保存该文本并稍后在代码中使用它 我正在使用达特 结合使用 InputElements 和 HTML5 本地存储 Dart 中的 Storage 接口实现了 Map 因此您可以将键 值对存储为字符
  • 从一个组件访问另一个组件的方法

    我在 Angular 中 需要从另一个组件调用一个组件的方法 拥有这个组件 import Component OnInit Input from angular core Component selector app popover tem
  • Excel 单元格到文本框的超链接

    我正在尝试手动将超链接放入单元格中 指向文本框 网上搜索无果 在 添加超链接 对话框窗口中 我尝试在 单元格引用类型 窗口中写入文本框的名称 TextBox1 但得到 引用无效 在同一窗口的 定义名称 下也没有 TextBox1 我的两个问
  • 大量点的贝塞尔曲线近似

    我有大约一百个点 我想用贝塞尔曲线来近似 但如果超过 25 个点 或类似的点 组合数量的阶乘计数会导致数字溢出 有没有一种方法可以以类似贝塞尔曲线的方式近似如此数量的点 平滑曲线 无需经过所有点 除了第一个和最后一个点 或者我是否需要选择另
  • 使用 css 设计 ng-bootstrap 手风琴样式

    我有一个带有手风琴的 Angular 2 组件 我使用 ng bootstrap 添加了它 一切功能正常 但是我尝试使用加载的样式 card card header card block已编译的手风琴元素具有的类 这些样式根本不会应用于元素
  • Django - 通过对两个查询集进行排序来合并它们

    我有两个模型 我正在这样查询它们 firstq FirstModel objects order by addedtime secondq SecondModel objects order by addedtime 我想对它们进行合并和排
  • 如何保存和编辑电缆打印的内容?

    这是后续如何以最小的格式将数据框导出到乳胶 https stackoverflow com questions 45929263 how to export a dataframe to latex with some minimal fo
  • 在列表列表中查找匹配值

    我正在尝试迭代 python 2 7 5 中的列表列表 并返回在第二个列表中找到第一个值的列表 如下所示 python 2 7 5 list1 aa ab bb bc cc list2 aa 1 3 7 de 2 2 1 bc 3 4 4
  • ASP.NET MVC 5 中的 Actionfilter 注入

    我有一个简单的过滤器 public class IsAdmin ActionFilterAttribute IAuthenticationFilter private string roleName IBusinessIdentity id
  • Kubernetes Service 没有活动 Endpoint

    我创建了一个Deployment Service and an Ingress 不幸的是 ingress nginx controllerpod 抱怨我的Service没有活动端点 controller go 920 Service
  • 将默认的 InteractivePopGestureRecognizer 扩展到屏幕边缘之外?

    我有一个UIViewController被推送到导航堆栈上 我想扩展标准的 iOS7 交互式平移手势 以将此视图控制器弹出到默认值之外UIRectEdgeLeft边界 以便用户可以通过从视图上的任何位置平移来启动交互式后退操作 我尝试过滚动
  • 在主 chm 文件窗口中打开合并 chm 文件中的主题

    我想在主 chm 文件窗口中打开合并 chm 文件中的主题 我有应用程序帮助的主要 chm 文件 所以这个主 chm 文件包含子 chm 文件 我想通过调用 htmlhelp 函数在主 chm 文件的窗口中打开子 合并 chm 文件中的主题