HTML Help Workshop介绍:微软出品的HTML Help WorkShop制作chm文件的最佳工具。

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

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

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

典型的配置文件(hhp)结构如下:

[OPTIONS]
Compatibility=1.1 Or later
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 中文(中国)

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

[FILES]
NewTopic.html

稍微解释下:

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)也是一个HTML文件,它包含若干个关键词,当用户打开chm文件后,单击索引标签并输入一个关键词后,chm文件将显示与这个关键词有关的主题的列表,使大家非常方便地找到相关主题。 典型的文件结构如下:
 
代码

<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gt <!--DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
<!-- Sitemap 1.0 --&gt
<!--HEAD>
<BODY>
<UL>
 <LI> <OBJECT type="text/sitemap">
 <param name="Name" value="NewTopic">
 <param name="Local" value="NewTopic.html">
 <!--OBJECT>
<!--UL>
<!--BODY>
<!--HTML>

内容页项目资源(hhc)文件结构如下:
代码

<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gt <!--DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<HTML>
<HEAD>
<meta name="GENERATOR" content="Microsoft® HTML Help Workshop 4.1">
<!-- Sitemap 1.0 --&gt
<!--HEAD>
<BODY>
<OBJECT type="text/site properties">
 <param name="Window Styles" value="0x237">
<!--OBJECT>
<UL>
 <LI> <OBJECT type="text/sitemap">
 <param name="Name" value="NewTopic">
 <!--OBJECT>
<UL>
 <LI> <OBJECT type="text/sitemap">
 <param name="Name" value="NewTopic">
 <param name="Local" value="NewTopic.html">
 <!--OBJECT>
<!--UL>
<!--UL>
<!--BODY>
<!--HTML>

 
用C#编程实现编译,其实是利用Process类来调用exe实现的。
代码

<!--Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--&gt Process helpCompileProcess  =   new  Process();  // 创建新的进程,用Process启动HHC.EXE来Compile一个CHM文件
  try
 {
  // 判断文件是否存在并不被占用
  try
 {
  string  path  =  _chmFile;  // chm生成路径
  if  (File.Exists(path))
 {
 File.Delete(path);
 }
 }
  catch
 {
  throw   new  Exception( " 文件被打开! " );
 }

ProcessStartInfo processStartInfo  =   new  ProcessStartInfo();
 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( new  Exception().Message);
  return   false ;
 }
 }
  finally
 {
 helpCompileProcess.Close();
 }
  return   true ;

 

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

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

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-675095/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/12639172/viewspace-675095/

C#生成CHM文件(转)相关推荐

  1. C#生成CHM文件(汇总篇)

    本文是前面的C#生成CHM文件系列文章的汇总以及一些其他的关于CHM的资料链接等. C#生成CHM文件(入门篇) http://www.cnblogs.com/alexis/archive/2010/ ...

  2. C#生成CHM文件(外篇使用hha.dll)

    在<C#生成CHM文件>一系列中,我们是以微软自带的hhc.exe来编译CHM文件的,这样有一个弊端就是当我们的机器里面并没有装hhc.exe就会报错,这通常在盗版的Windows系统比较 ...

  3. C#生成CHM文件(中级篇)

    在上篇<C#生成CHM文件(入门篇)>中,我们利用微软自带的hhc.exe以编程的方式创建一个CHM文件,而且调用的是一个静态的HMTL文件.   在中篇中,实现以下几个目标  1.将在线 ...

  4. C#生成CHM文件(应用篇)

    在入门篇中我们了解到如何使用C#调用hhc.exe来生成CHM文件,而在中篇中,我们进行了CHM反编译和将CHM文件转化为Word.在下篇中,我将简单介绍下这些技术在如何应用在实际项目中. CHM电子 ...

  5. C#生成CHM文件(应用篇)之代码库编辑器(1)

    下面的这个系列是以一个小软件的开发过程为基础,和大家分享下我在开发这个软件时遇到的一些问题和总结. 先更新下软件:代码库编辑器Beta版下载 ,上一版的程序见<C#生成CHM文件(应用篇)> ...

  6. 使用Teleport Ultra批量克隆网站,使用Easy CHM合并生成chm文件

    1.要下载的页面 http://www.howsoftworks.net/javaapi/ 2. 下载Teleport Ultra 3.使用Teleport Ultra批量克隆网站 4.下载Easy ...

  7. C# 生成CHM文件 资料汇总

    本文是前面的C#生成CHM文件系列文章的汇总以及一些其他的关于CHM的资料链接等. C#生成CHM文件(入门篇) http://www.cnblogs.com/alexis/archive/2010/ ...

  8. C#生成CHM文件(应用篇)之代码库编辑器(5)【总结、程序、源代码】

    经历了快一个月的开发(因为都是在闲暇时间做的,实际实际可能不到一周),AlexisEditor总算完成了. 这边说明一下为什么有些网友不能新增文章的问题. 原因是路径中有中文字符,我一直用的是英文系统 ...

  9. C#生成CHM文件(应用篇)之代码库编辑器(3)【附源代码下载】

    在这篇文章中,我将介绍AlexisEditor项目下主要Form的实现,即MainForm.EditForm. MainForm MainForm包含的主要变量如下 以frm开头的都是对应的窗体变量, ...

最新文章

  1. DIY 一套正版、免费、强大的 Visual Studio 2012 IDE
  2. 转载:sql2005 管道的另一端上无任何进程解决方法
  3. 使用Git工具生成公钥与私钥
  4. 现代的缓存设计方案:Window-TinyLFU
  5. JVM性能调优中的命令总结
  6. 阿里大鱼短信介入demo分享
  7. illegal multibyte sequence python3
  8. 机器学习专题(二):2.1机器学习的数据
  9. #6281. 数列分块入门 5
  10. Android挂断、接听电话
  11. 基于机器视觉的电容表面字符检测
  12. wildfly10 配置mysql_WildFly配置MySql驅動
  13. java 指针 引用_C++中的指针和引用与Java中的引用区别
  14. Linux挂载windos共享提示error
  15. ASP.NET里的路径的使用-预备篇
  16. 按键精灵文字替换,文字查找代码
  17. thoughtworks面试总结
  18. 笔记本双显卡Ubantu16.04 Nvidia驱动安装指导
  19. 计算机教育的含义是什么,计算机上的mc是什么意思,计算机上的mc mr ms M+ 分别代表什么意思?...
  20. 中铁建工集团安装公司基于BIM物资施工运维系统由橄榄山软件研发完成

热门文章

  1. 《android艺术探索》
  2. 基于51单片机的SD卡读卡器MMC存储器 proteus仿真程序设计
  3. Go C画图 CSP-J CSP-S NOIP 信息学奥赛 2023.01.25 测试题
  4. Linux设备驱动程序第三版源码
  5. hdu1272 小希的迷宫
  6. SQL Server(三)-查询数据(2)
  7. 基于ssm框架的汽车租赁租车行系统
  8. Linux挂载硬盘的步骤
  9. 痞子衡嵌入式:分享一个i.MXRT系列配套DRAM压力测试上位机工具(i.MXRT DRAM Tester)...
  10. vue3+Naive UI数据表格基本使用方式