List all topics from a CHM file

╄→гoц情女王★ 提交于 2019-12-07 02:48:42

问题


I am trying to get a CHM file to open to a specific topic using C#.

I have tried using

Help.ShowHelp(this, path, HelpNavigator.Topic, "TopicTitle");

but it doesn't find the page. I must not be keying in the topic title correctly. Is there a way that I can programatically retrieve all of the topics from a CHM file so that I can see what they are?


回答1:


No, the HtmlHelp API function is far too primitive to support enumerating topics. You could use the 7-zip file manager to look inside the .chm file. Right-click the file and choose "Open Inside". Or use the help authoring tool that was used.




回答2:


If you open a CHM file, and right click on a help page, you can choose the Properties command.
In the middle of the Properties page there is a property called: Address (URL).
The end of the URL contains the topic string used to open the help file to the correct page.

Here is an example: mk:@MSITStore:C:\Program%20Files\Sisulizer%202010\Sisulizer.chm::/OutputFiles.htm

If the URL is too long to see the topic at the end, you can select the address with your mouse and scroll to the end.

Here is a screen shot.




回答3:


You may also use the following, where path is path to the chm file:

using System.Windows.Forms;

Help.ShowHelp(this, path, HelpNavigator.KeywordIndex, "Topic title");



回答4:


I am not sure about how to programmatically retrieve topics from CHM. But I changed the one line code this way and it worked.

Help.ShowHelp(this, path , HelpNavigator.TopicId,"TopicTitle");


来源:https://stackoverflow.com/questions/2276019/list-all-topics-from-a-chm-file

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!