如何打开一个.CHM文件并跳转到特定主题?

17

我已经创建了一个.chm文件,但是当我在C#中打开它时,我会看到第一个主题。我想打开特定的主题。

这是我目前用来打开它的代码。

Help.ShowHelp(this, "./Resources/ServerHelp.chm");
我希望能够打开一个特定的主题,比如音频。我尝试使用了

Help.ShowHelp(this, "./Resources/ServerHelp.chm", HelpNavigator.Topic, "Audio");

页面显示未找到。可以帮我解决一下我的问题吗?谢谢!:P


1
请不要在问题标题中包含有关所使用编程语言的信息,除非没有它就没有意义。标签可以起到这个作用。 - Ondrej Janacek
好的,我在Stack Overflow上搜索了一下,但由于所有步骤都没有清晰地解释,所以仍然无法使其正常工作。当我弄明白后,我想我只是把它放在这里,现在我意识到我本可以回答其他人的问题。我会记住这一点,以备将来参考。 - Prince Champappilly
2个回答

24

以下步骤可实现此目标:

  1. 确定CHM使用哪些名称来引用内部主题。 方法如下:

    • 打开CHM文件,在主题页面上右键单击并选择“属性”。
    • 属性中的地址(URL)包含主题页面名称。

    这里有一个例子:

mk:@MSITStore:C:\Program%20Files\Silsila%2011\Silsila.chm::/Audio.htm

这里的主题页面名称是“Audio.htm”

  • 如下所示使用正确的参数调用Help.ShowHelp()函数

  • Help.ShowHelp(this, "./Resources/Silsila.chm", HelpNavigator.Topic, "Audio.htm");
    
    那就这样吧。您可以使用步骤1找到所需页面的主题名称,然后使用步骤2打开该页面上的帮助文件。

    谢谢。如果您现在的“上下文”是一个表单,但仍希望触发默认主题的 CHM 显示,该怎么办?在这种情况下,“this” 不被接受,因为“this” 不是一个窗体等。 - Andrew Truckle

    3
    同样的方法也适用于创建打开特定网页的Windows快捷方式。在“目标”命令行中使用以下内容:
    C:\Windows\hh.exe ms-its:[file_name.chm]::[page_name.htm]
    

    如果您不知道[page_name]是什么:从chm帮助查看器中,尝试将目标页面打印到虚拟打印机(如PdfCreator)。自动生成的输出文件名可能包含[page_mane]
    感谢sazr提供的初始语法!

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