在C#中打开CHM(帮助文件)

时间:2011-05-23 07:19:12

标签: c# file chm

我正在尝试在C#中打开帮助文件(chm扩展名)。

File.Open(@"//help.chm",FileMode.Open, FileAccess.Read, FileShare.Read);

FileStream fileStream = new FileStream(@"c:\help.chm", FileMode.Open);

不起作用:(

7 个答案:

答案 0 :(得分:25)

您可以使用 -

System.Windows.Forms.Help.ShowHelp(Control, String)

假设您处于表单/控件

Help.ShowHelp(this, "file://c:\\helpfiles\\help.chm");

ShowHelp方法还提供重载以转到位于已编译的HTML帮助文件中的特定主题和帮助页面。

在MSDN上阅读System.Windows.Forms.Help.ShowHelp

反编译CHM文件

就像在命令提示符下执行以下命令一样简单。

hh.exe -decompile <target-folder-for-decompiled-content> <source-chm-file>

例如:

hh.exe -decompile C:\foo\helpchmextracted help.chm

执行上述命令后,您应该在C:\foo\helpchmextracted文件夹中找到反编译的内容。

答案 1 :(得分:3)

        string helpFileName = @"c:\help.chm";
        if (System.IO.File.Exists(helpFileName))
        {
            Help.ShowHelp(this, helpFileName );                
        }

如果这不起作用,请尝试

        if (System.IO.File.Exists(helpFileName))
        {
            System.Diagnostics.Process.Start(helpFileName);              
        }

答案 2 :(得分:2)

根据请求将答案添加到答案中:

似乎第一个语句中的文件名不正确,但第二个语句中的文件名不正确 应该工作,除非文件被锁定,不存在或您没有访问该文件的权限。如果你想要ShellExecute文件,那么你应该使用System.Diagnostics.Process类,但是如果要提取CHM的内容,因为它是编译和格式化的,所以它不能像纯文本文件那样被读取。 看看这些链接:

Decompiling CHM (help) files with C#

CHM Help File Extractor

答案 3 :(得分:1)

第二行应该没问题,如果文件不存在则应抛出异常。需要更具体地说明你的意思“它不起作用”

答案 4 :(得分:1)

 Help.ShowHelp(this, AppDomain.CurrentDomain.BaseDirectory+"\\test.chm", HelpNavigator.Topic, "Welcome.htm");

欢迎是chm文件中欢迎年龄的ID

答案 5 :(得分:1)

System.Diagnostics.Process.Start(@"c:\help.chm");

答案 6 :(得分:0)

简单做到这一点

Help.ShowHelp(ParentForm,&#34; chmFile.chm&#34;,&#34; link.htm&#34;);