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



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

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

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

:(

不起作用
您可以使用

-

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:foohelpchmextracted help.chm

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

        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);              
        }

根据请求将我的评论添加到答案中:

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

使用 C# 反编译 CHM(帮助)文件

CHM 帮助文件提取器

好吧,第二行应该没问题,如果文件不存在,它应该抛出异常。需要更具体地说明"它不起作用"的含义

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

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

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

这样做很简单

Help.ShowHelp(ParentForm, "chmFile.chm", "link.htm");

相关内容

  • 没有找到相关文章

最新更新