我正在尝试在 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");