您的位置:首页 > 编程语言 > C#

C#生成CHM文件(入门篇)

2010-09-29 07:32 501 查看
HTMLHelpWorkshop介绍:微软出品的HTMLHelpWorkShop制作chm文件的最佳工具。

本文,我们将用编程的方法来实现将html文件编译成CHM文件。在开始编程之前,我们有必要了解下HTMLHelpWorkshop是怎么生成CHM的。

HTMLHelpWorkshop编译成CHM文件需要如下三个文件,分别以hhp,hhc,hhk为文件后缀名。

hhp:CHM工程文件,CHM目标文件属性95%的参数都在这里被确定.
hhc,列表文件,确定目标文件中左侧树形列表中"目录"选项卡下的内容.
hhk,索引文件,确定目标文件中左侧树形列表中"索引"选项卡下的内容.
hhp几乎就是一个标准的ini文件.分为三个小节Option,Windows,Files.典型的配置文件(hhp)结构如下:

[OPTIONS]
Compatibility=1.1Orlater
Defaultwindow=Main
Defaultfont=宋体,9,1
Contentsfile=test.hhc
Indexfile=test.hhk
Displaycompileprogress=Yes
Full-textsearch=Yes
Language=0X804中文(中国)

[WINDOWS]
Main=,"test.hhc","test.hhk",,,,,,,0x20,0xB4,0x104E,[80,60,720,540],0x0,0x0,,,,,0

[FILES]
NewTopic.html

稍微解释下:

Defaultwindow=Main:默认的显示模式,这里是主页面

Defaultfont=宋体,9,1:默认的字体

Contentsfile=test.hhc:内容文件

Indexfile=test.hhk:索引文件

Displaycompileprogress=Yes:是否显示编译过程

Full-textsearch=Yes:是否全文搜索

Language=0X804中文(中国):默认语言

索引文件(hhk)也是一个HTML文件,它包含若干个关键词,当用户打开chm文件后,单击索引标签并输入一个关键词后,chm文件将显示与这个关键词有关的主题的列表,使大家非常方便地找到相关主题。典型的文件结构如下:
代码ProcesshelpCompileProcess=newProcess();//创建新的进程,用Process启动HHC.EXE来Compile一个CHM文件
try
{
//判断文件是否存在并不被占用
try
{
stringpath=_chmFile;//chm生成路径
if(File.Exists(path))
{
File.Delete(path);
}
}
catch
{
thrownewException("文件被打开!");
}

ProcessStartInfoprocessStartInfo=newProcessStartInfo();
processStartInfo.WindowStyle=ProcessWindowStyle.Hidden;
processStartInfo.FileName=hhcFile;//调入HHC.EXE文件
processStartInfo.Arguments="\""+Path.GetFullPath(GetPathToProjectFile())+"\"";//获取空的HHP文件
processStartInfo.UseShellExecute=false;
helpCompileProcess.StartInfo=processStartInfo;
helpCompileProcess.Start();
helpCompileProcess.WaitForExit();//组件无限期地等待关联进程退出

if(helpCompileProcess.ExitCode==0)
{
MessageBox.Show(newException().Message);
returnfalse;
}
}
finally
{
helpCompileProcess.Close();
}
returntrue;

附件是项目,.Net4.0的,有兴趣的可以在其他版本上也实现下,只要将文件拷过去即可。

如果是vs2010,直接运行项目即可,在运行项目之前可以先把CreateChm\bin\Debug目录下的hhp、hhc、hhk、chm文件全部删掉,运行程序后后生成这些文件。

PS:我尝试将一些引用js文件和图片的html文件,将他们编译为chm文件时,这些js文件和图片能够自动被包含到chm文件中,呵呵,这样就可以创建丰富多彩的chm文件了,如我给的demo中,指针就是一个漂亮的时钟,关于更复杂的CHM编程,稍后带来。

PS:如果觉得的好的话,请点推荐,如果值得收藏的话,请点收藏,3Q

C#创建简易CHM文件Demo


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: