在 C# 中打开 CHM(帮助文件)
Posted
技术标签:
【中文标题】在 C# 中打开 CHM(帮助文件)【英文标题】:Open CHM (help file) in C# 【发布时间】:2011-08-30 22:41:18 【问题描述】:我正在尝试用 C# 打开帮助文件(chm 扩展名)。
File.Open(@"//help.chm",FileMode.Open, FileAccess.Read, FileShare.Read);
和
FileStream fileStream = new FileStream(@"c:\help.chm", FileMode.Open);
没有用:(
【问题讨论】:
“不起作用”不是一个好的问题描述。它究竟是如何不起作用的? 无法打开文件,或错误:UNC 路径的格式应为 \\server\share 第一个语句中的文件名似乎不正确,但第二个语句应该可以工作,除非文件被锁定、不存在或您无权访问该文件。 @Bodo 你想从网络路径打开文件吗?那么它应该是@"\\ServerName\Path\FileName" 并且您必须获得授权并具有权限。 @fardjad:你能把你的 cmets 放到一个答案中吗? 【参考方案1】:第二行应该没问题,如果文件不存在它应该抛出异常。需要更具体地说明“它不起作用”的意思
【讨论】:
【参考方案2】:你可以使用 -
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
文件夹中找到反编译的内容。
【讨论】:
如何在相同的win表单中显示帮助?【参考方案3】:根据要求将我的 cmets 添加到答案中:
第一个语句中的文件名似乎不正确,但是第二个语句中的文件名似乎不正确
除非文件被锁定、不存在或您无权访问该文件,否则应该可以正常工作。如果要 ShellExecute 文件,则应使用 System.Diagnostics.Process
类,但如果要提取 CHM 的内容,由于已编译和格式化,因此无法像纯文本文件一样读取。
看看这些链接:
Decompiling CHM (help) files with C#
CHM Help File Extractor
【讨论】:
【参考方案4】:这样做很简单
Help.ShowHelp(ParentForm, "chmFile.chm", "link.htm");
【讨论】:
这里有一条评论。通过使用这种方法,您可以打开特定主题的帮助。但是,此方法将锁定 chm 文件,直到您关闭可执行文件。关闭chm文件没关系,文件将被永远锁定。如果需要更新 chm 文件,最好使用 Process.Start 方法。您将无法再打开特定主题,但至少,您可以根据需要更新文件。就我而言,我必须通过下载新版本来更新帮助文件。如果我之前打开过帮助文件,我将无法再更新它。【参考方案5】: 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);
【讨论】:
【参考方案6】: Help.ShowHelp(this, AppDomain.CurrentDomain.BaseDirectory+"\\test.chm", HelpNavigator.Topic, "Welcome.htm");
欢迎是 chm 文件中欢迎年龄的 id
【讨论】:
【参考方案7】:System.Diagnostics.Process.Start(@"c:\help.chm");
【讨论】:
请阅读***.com/help/how-to-answer 并改进您的答案。尝试解释为什么您的代码与问题不同。以上是关于在 C# 中打开 CHM(帮助文件)的主要内容,如果未能解决你的问题,请参考以下文章