gpt4 book ai didi

chm - 如何从 CHM 文件中获取 TopicID?

转载 作者:行者123 更新时间:2023-12-02 19:47:50 27 4
gpt4 key购买 nike

我正在使用 SandcaSTLe Help File Builder 基于 csproj 文件生成 CHM 文件。我最终想做的是找到 CHM 文件中每个主题的 TopicID,并将它们与 Excel-Dna 一起使用,如下所示:

...
[ExcelFunction(Category = "MyCategory", Name = "MyUDF", HelpTopic="MyHelp.chm!102")]
...

尽管我知道 CHM 文件中文章的所有 URL -- 我可以使用 7zip 和 HTML Help Workshop (HHW) 查看内容 -- 我不知道如何使用 SandcaSTLe 或 HHW 来映射主题到某些 ID 或找出我已有的主题的 ID。

有什么想法吗?

干杯,

克里斯托

----更新----

我继续使用 Doxygen 创建了一个 CHM 文件,并在 HTML Help Workshop 的 HPP 文件中手动添加了 [MAP] 和 [ALIAS] 字段。我已将特定的 html 映射到数字 1000,因此现在当我使用“MyHelp.chm!1000”时,它实际上会打开 chm 文件内的正确 html。因此,我认为 SandcaSTLe 没有进行与 Excel-Dna 一起使用的映射和别名是一个问题。我不想采用这种迂回方式,因为我计划将其添加为我们使用的 TFS 上的构建事件。你觉得还有其他办法吗?

我尝试过这样做:

MyHelp.chm!html\filename_of_generated_html
MyHelp.chm!html\filename_of_generated_html.html
MyHelp.chm!html\\filename_of_generated_html
MyHelp.chm!html.filename_of_generated_html

但它们似乎都无法指向 CHM 文件。

有什么想法吗?

最佳答案

据我所知,似乎没有一种简单的方法可以自动执行此操作。投入时间和精力的最佳折衷方案是创建一个映射/别名文件来进行重新映射。通过使用 SHFB 作为临时副产品创建的输出,您可以注入(inject)自定义的 HHP 文件,其中包括每个 HTML 文件的所有映射和别名。然后只需使用上述 HHP 文件再次编译所有内容即可。当新的 UDF 函数添加到 Excel 前端并通过 Excel-Dna 公开时,需要将手动条目添加到 HHP 文件中。对于具有一些 UDF 的项目,我认为不值得自动创建 HHP 文件。但是,如果您正在处理 1000 个 UDF,您最好创建一个 C# 项目来自动生成此文件。因此,当创建新的 UDF 函数时,需要将以下行添加到 HHP 文件中:

 For example if you've created the UDF function MyFunction(...), then its Excel-Dna attribute
will be:
[ExcelFunction(IsThreadSafe = true, Category = Defines.ExcelCategory, Name = "MyFunction", Description = "My function's description", HelpTopic = "Help_Manual.chm!XXXX")]

Then you'll need to add the following lines in the HHP file:

[FILES]
...
html\M_ExcelWrapper_QDAExcelUDFs_MyFunction.htm
...


[ALIAS]
...
MYFUNCTION=html\M_ExcelWrapper_ExcelUDFs_MyFunction.htm
...


[MAP]
...
#DEFINE MYFUNCTION XXXX
...

映射的名称需要与别名分配相匹配,而别名分配又需要指向已添加到 [Files] 部分中的文件。

我希望这在某种程度上有用。

关于chm - 如何从 CHM 文件中获取 TopicID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16777089/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com