我正在尝试在C#中打开帮助文件(chm扩展名)。
File.Open(@"//help.chm",FileMode.Open, FileAccess.Read, FileShare.Read);
和
FileStream fileStream = new FileStream(@"c:\help.chm", FileMode.Open);
不起作用:(
答案 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的内容,因为它是编译和格式化的,所以它不能像纯文本文件那样被读取。
看看这些链接:
答案 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;);