• 使用HTML Help Workshop将HTML转为CHM


    使用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

  • 相关阅读:
    ural1238. Folding(记忆化)
    URAL1410. Crack
    树套树Day1线段树套平衡树bzoj3196
    noipd2t3列队
    NOIP2017D1T3
    uoj279温暖会指引我们前行
    一篇打脸文
    Link-Cut Tree
    重口味费用流
    bzoj1000~1025
  • 原文地址:https://www.cnblogs.com/AspDotNetMVC/p/2764978.html
Copyright © 2020-2023  润新知