如何在CHM文件中找到主题ID

5

我希望从我的C#项目中打开一个CHM文件。我想要打开CHM文件的相关部分,因此我使用以下代码行:

Help.ShowHelp(this, help_file, HelpNavigator.TopicId, topic_id);

问题是,我没有这个CHM文件的源代码,也不知道它的主题ID。有没有办法获取这个CHM文件的主题ID?


可能是 https://dev59.com/hk_Ta4cB1Zd3GeqPCqU_ 的重复问题。 - Developer
@User 是的,同样的问题。但是它也没有得到答复。我没有 CHM 项目的源代码。有没有一种方法可以探索 chm 文件的主题 ID? - mustafa
可能是重复的问题:在C#中从chm文件获取主题列表 - Hans Passant
1个回答

2
使用各种提取器(主要基于chmlib)提取CHM文件,然后查看提取的“*.hhc”文件。这是一个主题映射,将主题标题/ID与CHM文件中的内部URL匹配。
请注意,一些罕见的CHM文件具有二进制目录和无hhc文件,但是由于HH默认设置不鼓励这种情况,因此几乎不可能发生。
稍后添加: Free Pascal的chmls工具的提取选项数量已更新。(虽然有些更多的是转储功能而不是真正的提取):确保您获得2.6.4+版本之一
列表[章节编号] 显示存档目录的内容 提取[saveasname] 从存档“filename”中提取文件“filename to get”,如果指定,则保存到[saveasname]中 extractall[directory] 将存档“filename”的所有文件提取到目录“directory”中 unblockchm [filespec2] .. 批量取消阻止(XPsp2+)相关的CHM。允许多个文件和通配符 extractalias[basefilename] [symbolprefix] 从文件“chmfilename”中提取上下文信息到“basefilename”。h和“basefilename”。ali,使用符号“symbolprefix”contextnr extracttoc[filename] 提取toc(主要是为了检查二进制TOC) extractindex[filename] 提取索引(主要是为了检查二进制索引) printidxhdr 以可读格式打印#IDXHDR printsystem 以可读格式打印#SYSTEM printwindows 以可读格式打印#WINDOWS printtopics 以可读格式打印#TOPICS

谢谢,我已经得到了hhc文件。这是一个网站地图HTML文件。其中包含以下内容:<UL> <LI><OBJECT type="text/sitemap"><param name="Name" value="Produktübersicht"></param> <param name="Local" value="37161011467/37161015563.htm"></param> <param name="FrameName" value="_self"></param> <param name="ImageNumber" value="1"></param> </OBJECT> </LI>` 这里应该定义主题ID吗? - mustafa
现在在chmls中也有一些选项,请参见上文。 - Marco van de Voort

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接