使用HTML Help Workshop编译成CHM文件需要如下三个文件,
分别以hhp,hhc,hhk为文件后缀名。
hhp:CHM工程文件,CHM目标文件属性参数在这里配置.
hhc,列表文件,确定目标文件中左侧树形列表中"目录"选项卡下的内容.
hhk,索引文件,确定目标文件中左侧树形列表中"索引"选项卡下的内容.
[hhp文件]
hhp几乎就是一个标准的ini文件.分为三个小节Option,Windows,Files.
典型的配置文件(hhp)结构如下:test.hhp
[OPTIONS] Compatibility=1.1 Or later Default window=Main Default font=宋体,9,1 Contents file=test.hhc Index file=test.hhk Default topic=Htm\FAQ.htm Display compile progress=Yes Title=帮助文档 Full-text search=Yes Language=0X804 中文(中国) [WINDOWS] Main=,"test.hhc","test.hhk",,,,,,,0x20,0xB4,0x104E,[80,60,720,540],0x0,0x0,,,,,0 [FILES] FAQ.htm test1.htm test2.htm
稍微解释下:
Default window=Main:默认的显示模式,这里是主页面
Default font=宋体,9,1:默认的字体
Contents file=test.hhc:内容文件
Index file=test.hhk:索引文件
Display compile progress=Yes:是否显示编译过程
Full-text search=Yes:是否全文搜索
Language=0X804 中文(中国):默认语言
[hhk文件]test.hhk:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <meta name="GENERATOR" content="Microsoft@ HTML Help Workshop 4.1"> </HEAD> <BODY> <UL> <LI><OBJECT type="text/sitemap"> <param name="Name" value="Blog1"> <param name="Local" value="Htm\test1.htm"> </OBJECT> <LI><OBJECT type="text/sitemap"> <param name="Name" value="Blog2"> <param name="Local" value="Htm\test2.htm"> </OBJECT> </UL> </BODY> </HTML>
[hhc文件] test.hhc:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN"> <HTML> <HEAD> <meta name="GENERATOR" content="Microsoft@ HTML Help Workshop 4.1"> <HEAD> <BODY> <OBJECT type="text/site properties"> <param name="Window Styles" value="0x237"> <OBJECT> <UL> <LI><OBJECT type="text/sitemap"> <param name="Name" value="FAQ"> <param name="Local" value="Htm\FAQ.html"> </OBJECT> <UL> <LI> <OBJECT type="text/sitemap"> <param name="Name" value="Blog1"> <param name="Local" value="Htm\test1.html"> <param name="ImageNumber" value="13"> </OBJECT> <LI><OBJECT type="text/sitemap"> <param name="Name" value="Blog2"> <param name="Local" value="Htm\test2.html"> <param name="ImageNumber" value="13"> </OBJECT> </UL> </UL> </BODY> </HTML>
一般<UL></UL>代表一级节点,子节点表示如下:
<LI> <OBJECT type=\"text/sitemap\">
<param name=\"Name\" value=\"数据库服务器\">
<param name=\"Local\" value=\"HTML\\全部对象.htm\">
<param name=\"ImageNumber\" value=\"13\">
</OBJECT>
[编译]
public string hhcFile = @"C:\Program Files\HTML Help Workshop\hhc.exe"; //hhc.exe文件位置,windows自带的,一般是这个路径 public string _defaultTopic = "";//默认的页面 private bool Compile() { string _chmFile = startPath + @"\test.chm"; //chm文件存储路径 Process helpCompileProcess = new Process(); //创建新的进程,用Process启动HHC.EXE来Compile一个CHM文件 try { //判断文件是否存在并不被占用 try { string path = _chmFile; //chm生成路径 if (File.Exists(path)) { File.Delete(path); } } catch(Exception e) { throw new Exception("文件被打开!"); } ProcessStartInfo processStartInfo = new ProcessStartInfo(); processStartInfo.WindowStyle = ProcessWindowStyle.Hidden; processStartInfo.FileName = hhcFile; //调入HHC.EXE文件 processStartInfo.Arguments = "\"" + GetPathToProjectFile() + "\"";//获取空的HHP文件 processStartInfo.UseShellExecute = false; helpCompileProcess.StartInfo = processStartInfo; helpCompileProcess.Start(); helpCompileProcess.WaitForExit(); //组件无限期地等待关联进程退出 if (helpCompileProcess.ExitCode == 0) { MessageBox.Show(new Exception().Message); return false; } } finally { helpCompileProcess.Close(); } return true; }
[参考]http://www.cnblogs.com/Dotaer/archive/2012/08/02/2619854.html