Windows 98的帮助文件与Windows 95的比有较大的改变,它使用一种基于HTML文件特征的帮助文件,用Internet Explorer显示帮助内容,支持HTML、ActiveX、Java、脚本(Java脚本和VB脚本)以及HTML图像格式(.JPEG、GIF、PNG),它的图标也变了,后缀名为chm,Windows 98称之为Compiled HTML Help File。为了叙述方便,下面就称之为chm文件。典型的Windows 98规范的帮助文件(.chm文件)的窗口和Windows 98资源管理器差不多,左侧是目录、索引和搜索这三个功能项,通过选项卡切换;右侧是HTML文件的显示部分,改变了原来帮助文件目录窗口和主题窗口分离的情况。由于HTML文件具有多媒体表现力,因此chm文件的内容不再局限于文字和静态图像,在其中可以插入GIF动画,也可以利用浏览器的插件在文档中播放声音文件、动画影片、或其它格式的多媒体内容。加入URL地址可与因特网联系在一起,这样chm文件就不局限于包装好的内容了,它是微软公司的下一代联机帮助系统。同时,chm文件的核心是充分利用HTML文件的表现能力,对分散的HTML文件作整体的包装,这也是目前在Web网页以外利用HTML文件的一个趋势。如果你用这个方式制作学习教程、电子图书和杂志,或为用户提供产品目录和宣传材料,比已经流行的PDF文件更简洁和方便。
chm文件从结构上来看可分为两个部分:运行器和文档内容。运行器是操作系统的一部分,而文档内容随其所附的应用程序而变化。这与以前的Winhelp的结构没有多少差别。不过运行器部分有了较大的改进,运行器很小巧并且不直接运行HTML文件,而是操作一个ActiveX 的组件,控制支持ActiveX 组件的网页浏览器,如微软的Explorer 3.0以上版本的浏览器。它的一个好处是能跨平台运行,只要有不同平台上的运行器和浏览器,chm文件不再需要重新编制。
制作chm文件的工具是微软公司的Htmlhelp Workshop工具包,目前在微软的主页上(http://msdn.microsoft.com/workshop/author/Htmlhelp/)提供最新的1.21版。这是英文版的,不过没有关系,其运行的界面和用户使用的操作系统一致,与Workshop的语言版本无关。如果操作系统是Windows 95又没有安装Internet Explorer 4.0就不能直接阅读chm格式的文件,上面这个网址提供了一个工具包(Hhupd.exe),下载安装后就行了。安装Htmlhelp Workshop很方便,只要按照提示进行。它的使用也很方便,没有编程和写语言的要求,只要你会制作HTML文件就行了。
制作chm文件很方便,也很简单。大量的工作是以编写HTML文件为主,它的每个主题就是一个HTML文件,这些主题应该事先编辑好,并用Internet Explorer检查确认无误。主题文件可以用任何一个HTML编辑器编辑,也可用Htmlhelp Workshop编辑。如果不熟悉HTML文件的编辑,还可用Word 97,因为Word 97可以把Word文档(.doc文件)另存为HTML文件,还可以将Word文档批量转换成HTML文件。这样就可以完全按照编辑Word文档的习惯编辑成Word文档,再转换成HTML文件。
运行Htmlhelp Workshop时,它的工作窗口很简单,菜单栏上有五个命令,分别是“File(文件)”、“View(校验)”、“Test(测试)”、“Tools(工具)”、“Help(帮助)”。下面的工具栏有五个按钮,分别是“New(新建)”、“Open(打开)”、“Compiled HTML file(编译HTML文件)”、“View Compiled file(校验编译文件)”、“Display online information(联机帮助)”。下面介绍具体步骤:
一、创建项目文件
单击Htmlhelp Workshop菜单或工具栏中的“New(新建)”命令,这时出现“选择新建内容”的对话框。这里有五个选项:“Project(项目)”、“Text(文本)”、“HTML File(HTML文件)”、“Table of Contents(目录)”、“Index(索引)”。选择“Project(项目)”,接着出现“Project(项目)”向导,告诉你这个向导可以转换的文件格式,一般情况下我们是要创建项目(.hhp)文件,不需要转换。直接进入“下一步”指定放置的目录和输入文件名就可以了,单击“下一步”,进入了“现有文件”对话框,如果你想将已经存在的文件包含进“项目”里,在下面列表中选择。这里一般空着,这些文件(包括已经编辑好的主题文件)以后可以添加。进入“下一步”后再“确定”就进入了Htmlhelp Workshop工作窗口。在窗口的上方是3个选项卡,分别是“Project(项目)”、“Contents(目录)”、“Index(索引)”。在“项目”窗口的左侧是7个按钮,它们的功能名称自上而下分别是:“Change project options(改变项目选项)”、“Add/Remove topic files(添加/删除主题文件)”、“Add/Modify window definitions(添加/修改窗口定义)”、“HtmlHelp API information(HTML帮助API信息)”、“View HTML source(校验HTML源文件)”、“Save Project Contents and Index files(保存项目、目录和索引文件)”、“Save all file and Compile(保存全部文件并编译)”。
单击“Change project options(改变项目选项)”按钮,出现“Options(选项)”对话框,光标在“General(常规)”选项卡的“Title(标题)”文本框内闪烁,在这里加入标题,编译后这个标题将出现在chm文件窗口的标题栏中。其它的内容暂时用系统的默认值。然后单击“Add/Remove topic files(添加/删除主题文件)”按钮,再选择“Add(添加)”按钮,把作为封面页的HTML文件添上。封面页的文件一定要有,否则编译的帮助文件运行后,系统会报错。好了,简单的“项目”编辑就完成了。
二、创建目录文件
单击“Contents(目录)”选项卡,这时系统弹出一个对话框,提示你“项目”还没有关联目录文件(.hhc),你可以创建一个新的目录文件,或者指定一个现有的。这里选择“Create a new contents file(创建一个新目录文件)”,进入下一步请你选定一个新目录文件的名称和存放路径,指定后出现目录编辑窗口。在目录窗口的左侧有11个按钮,前5个分别是:“Contents properties(目录工具)”、“Insert a heading(插入标题)”、“Insert a page(插入页面)”、“Edit selection(编辑选择)”、“Delete selection(删除选择)”,中间4个箭头用来调整指定标题或页面的位置,最后两个已在项目编辑窗口中出现过。根据需要插入标题或页面目录,按下“Insert a heading(插入标题)”或“Insert a page(插入页面)”按钮,都会弹出“Table of Contents Entry(目录条目)”对话框,在“Entry title(条目标题)”文本框中输入条目的标题,并根据情况选定对应的主题(HTML文件),单击“Entry title(条目标题)”下的“Add(添加)”按钮,在弹出的对话框的下面“File or URL(文件或URL地址)”文本框中输入文件名或URL地址并确定;单击“Advanced(高级)”选项卡,在“Image index(图像索引)”栏中为条目指定图标,比如包含其它条目的条目可以用书形图标,而页面条目的可以用问号图标。如果在单击“Insert a page(插入页面)”按钮之前所选择的条目不包含别的条目,也不被别的条目所包含,那么会询问“是否要创建一个起始条目”,选择了“是”会增加起始条目(一级条目),选择了“否”会增加一个子条目。标题可以不添加主题文件或URL地址,也可放置需要的主题文件,作为标题的说明内容。标题可以分为多级,要按照制作的内容统一考虑。如果觉得不满意,可以用左侧的箭头进行调整,也可以选定该条目,单击鼠标右键,不但可以调整,还可以插入标题、主题或目录文件。编辑目录文件是制作chm文件最关键的工作,目录文件应该包含一个chm文件所有目录(主题),而每个目录又包含条目标题(名称)和该条目的主题文件,要避免条目标题与对应的主题不一致的情况出现。等所有目录都添加好后目录就算完成了。
完成目录编制后,一个chm文件已具备了雏形,索引的内容暂时空着。保存项目文件和目录文件后就可以编译,编译就是把所有用到的HTML文件统统压缩后包装在一起,形成一个后缀名是.chm的文件。在主工具栏按钮中可以找到编译按钮和试运行按钮,也可直接按项目窗口左下方的“Save all file and Compile(保存全部文件并编译)”按钮进行编译。编译后再运行就可以看到作品的面貌了。目录的内容在编译后显示在chm文件窗口的左侧,可以展开标题后显示以下的目录,单击目录可以打开相应的主题文件,显示相应的内容。如果发现问题,还可以进行修改调整。
三、创建索引文件
在Htmlhelp Workshop的工作窗口上单击“Index(索引)”选项卡,和创建目录文件一样,也会弹出一个对话框,操作也是一样的。进入索引编辑窗口,左侧也有11个按钮,有8个是已经熟悉的,还有3个分别是:“Index properties(索引工具)”、“Insert a keyword(插入关键字)”、“Sort keywords alphabetically(排序关键字)”。所谓关键字是用户可能用到的并与一个或多个帮助主题文件关联在一起的字、词或短语,索引文件(.hhk)也是一个HTML文件,它包含若干个关键字,当用户打开chm文件后,单击索引标签并输入一个关键字后,chm文件将显示与这个关键字有关的主题的列表,非常方便地找到相关主题。单击“Insert a keyword(插入关键字)”按钮,出现一个与“Table of Contents Entry”对话框十分相似的“Index Entry(索引项)”对话框,在“General(常规)”选项卡的“Keyword(关键字)”文本框中输入关键字,单击“Add(添加)”按钮指定与该关键字相关联的主题文件。如果想跳转到另一个关键字,在“Index Entry(索引项)”对话框中按“Advance(高级)”选项卡,选中下面的“Destination is Another Keyword(目的地是另一个关键字)”,单击“General(常规)”选项卡,单击“Add(添加)”按钮,在“File or URL(文件或URL地址)”框中输入要跳转的关键字,单击“OK”。
四、创建搜索
chm文件的“Search(搜索)”选项卡允许用户在所有主题文件中搜索字、词或短语,将它们的标题显示出来,而且在主题中用醒目的方式来显示。打开一个项目文件,单击“Project(项目)”选项卡的“Change project options(改变项目选项)”,在“Options(选项)”对话框的“Compiler(编译)”选项卡中选中“Compile Full Text Search Information(编译全文搜索信息)”即可。
上述介绍的是编制HTML帮助文件的基本步骤,上手很容易。但它的功能远非这些,如在窗口定义中可以设计你所喜爱的形式,几乎所有的窗口要素都可以改变。向HTML文件中插入快捷方式、相关主题、关键字链接、联想链接、HTML Help ActiveX控件、Java脚本、弹出式窗口等等,详细的内容请参考Htmlhelp Workshop的帮助文件,或微软的相应网页。相信你试过以后一定会喜欢它。
使用HTML Help WorkShop的几点技巧
看到本文的标题后,可能你对HTML Help WorkShop还有点陌生。但如果我告诉你它就是制造CHM的家伙,你一定会觉得亲切得多。随着CHM的流行,你可能需要在某个时候为你的系统编写CHM文件。这里向大家介绍几个在使用HTML Help Workshop过程中的技巧,希望到时候能够使你的工作更加轻松。
本文不想写成HTML Help Workshop Tutorial或者User Guide之类的东西,关于这些基本的介绍可以参考HTML Help Workshop自身的帮助或者网上的文章,在这里我只是介绍一些技巧性的东西以及曾经困扰我的问题。所以大家最好能够对HTML Help Workshop有一定的了解。
一、反编译CHM文件
一般来说,制作一个CHM文件的步骤是:创建HTML帮助项目文件,然后加入目录文件、索引文件以及HTML源文件,最后编译就得到最终的CHM文件。但有的时候,你可能需要修改一下现有的CHM文件,这个时候你就需要用到HTML Help Workshop的反编译CHM文件的功能。它可以将现有的CHM文件反编译成相应的HTML源文件,目录文件和索引文件(如果存在的话)。
图一:反编译CHM文件
注意:CHM文件反编译之后,可以得到目录文件(.HHC)、索引文件(Index文件 .HHK)以及HTML等源文件,但是还缺少项目文件(.HHP)。如果你想修改后重新编译的话,必须自己创建HHP文件,然后把那些文件加入到该项目中(新建项目时可以选择采用现有的文件)。
图二:新建工程时选择已有的文件
二、查找替换的技巧
用HTML Help Workshop来制作CHM文件非常的简单方便,但是存在着几个明显的缺陷,这主要体现在对查找替换的支持不足。虽然在HTML Help Workshop中提供了查找替换的功能,但是非常简单,只能在单个文件中进行查找,不支持高级的查找功能,比如我现在需要将一英文CHM文件翻译成中文文件,我希望能够将所有文件中的“property”替换成“属性”,那问题就来啦,你必须重复地执行打开文件-〉查找替换-〉保存文件的操作,非常的麻烦。
当然解决办法是有的。因为这些源文件都是HTML文件,你可以利用其它的编辑器来打开,并利用这些编辑器提供的查找替换功能来实现上面的操作。注意:最好不要选用Microsoft Visual InterDev作为编辑器,因为它可能会把HTML文件中的弹出式菜单给转换掉,而应该采用UltraEdit等纯文本编辑器。
如果说这个还算比较容易解决的话,那下面这个问题可着实困挠了我很久。因为在英文CHM文件的目录和索引中也存在着大量的重复单词(比如property,method等),我需要将它们一一翻译成中文。但HTML Help Workshop根本不提供在目录和索引中进行查找和替换的功能。莫非我只能一个个地进行修改,要知道那可有成千上万个地方需要修改。不要惊讶,我开始就是这样进行操作的,在经过几次痛苦的反复之后,我决定寻找解决的办法。
首先,因为HTML Help Workshop主要对HTML文件进行操作,那我想是否目录文件(.hhc)或者索引文件(.hhk)也可能是HTML文件。我试着用UltraEdit来打开这些文件,居然成功,你可以看到整齐的<UL><LI>排列,接下来你该知道怎么做!
三、任意风格窗口样式的设定
HTML Help Workshop默认的窗口样式只包括目录和索引,我想大部分人都不会满足于此,那你就必须自己动手来设定你自己的窗口样式。点击“Project”栏中的“Add/Modify window definitions”按钮得到“Window Types”对话框,你可以在那里设定任意的窗口样式,比如加入搜索和书签等功能。
图三:选择Add/Modify window definitions按钮
图四:Window Types对话框设定任意的窗口风格
四、弹出式菜单的设计
图五:弹出式菜单的效果
在CHM文件中比较常用的一种效果就是弹出式菜单,非常方便直观,要实现这样一种效果非常的简单,下面就是一段示例代码(图中红字部分):
<HTML>
<HEAD>
<TITLE>accType 属性</TITLE>
<link REL="stylesheet" TYPE="text/css" HREF="stylesheet.css">
</HEAD>
<BODY>
<p><h1>accType 属性</h1></p>
<p>
<OBJECT TYPE="application/x-oleobject" CLASSID="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" ID="accType_SA">
<PARAM NAME="Command" value="Related Topics, MENU">
<PARAM NAME="Text" VALUE="Text:请参阅">
<PARAM NAME="Flags" VALUE="1">
<PARAM NAME="Font" VALUE="Helvetica,8,,#808080,PLAIN">
</OBJECT>
<OBJECT TYPE="application/x-oleobject" CLASSID="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11" ID="accType_EX">
<PARAM NAME="Command" value="Related Topics, MENU">
<PARAM NAME="Text" VALUE="Text:范例">
<PARAM NAME="Flags" VALUE="1">
<PARAM NAME="Font" VALUE="Helvetica,8,,#808080,PLAIN">
</OBJECT>
<OBJECT TYPE="application/x-oleobject" CLASSID="clsid:adb880a6-d8ff-11cf-9377-00aa003b7a11">
<PARAM NAME="Command" value="Related Topics, MENU">
<PARAM NAME="Text" VALUE="Text:应用于">
<PARAM NAME="Flags" VALUE="1">
<PARAM NAME="Item1" VALUE="Account Object;Account.html">
</OBJECT>
</p>
<p><p>该属性表示帐号的类别。</p>
</p>
<p><b>返回值</b></p><p>返回<b>字符串</b>值。</p>
<p><b>语法</b></p><p><i>object</i><b>.accType</b> [= <i>value</i>]</p><p>具体说明:</p>
<p>
<TABLE border=1 cellpadding=5 cols=2 frame=below rules=rows width=587>
<TR VALIGN="top">
<TD width=27%><B>变量</B></TD>
<TD width=73%><B>详细描述</B></TD>
</TR>
<TR VALIGN="top">
<TD width=27%><I>object</I></TD>
<TD width=73%>一<b><a href="Account.html">Account</a></b>对象。</TD>
</TR>
<TR VALIGN="top">
<TD width=27%><I>value</I></TD>
<TD width=73%>一<b>字符串</b>值。</TD>
</TR>
</TABLE></p>
</BODY></HTML>
问题:
制作CHM工具:Microsoft HTML Help Workshop v1.3 英文版
问题1:默认首页不能显示
在Project->Change project options,在Default files里输入一个.htm的路径后,首页还是不能显示。
解决方法:
(1)要做首页的.htm文件必须也要编译到.CHM帮助文档中,比如选择一个heading,将首页的.htm的路径添
加到它的URL中;
(2)用相对路径。将要做为首页的.htm拷贝到和.hhp的相同目录或在.hhp同级目录的文件夹下,然后把要
做首页的.htm的相对.hhp的路径填入Default files中,比如:我的SIMS.hhp存放在C:\Help,首页.htm存
放在C:\Help\help files文件夹中,这样只需将help files\首页.htm填到Default files中即可。
(3)保存,重新编译。
问题2:CHM帮助文件不能显示图片
我是先在Word中写好帮助文档,排版后,将.doc文档另存为网页:
即执行:文件->另存为网页,在弹出的"另存为"对话框中有三种网页格式:单个文件网页(*.mht;*.mhtml)
,网页(*.htm;*.html),筛选过的网页(*.htm;*.html) 我以前选的是第二种,可后来发现有图片的地方
不能显示,总是显示为一个红色的叉叉。
解决方法:将.doc文档另存为网页,在弹出的"另存为"对话框中选择“筛选过的网页(*.htm;*.html),这
样就能正常显示图片。我觉得这和图片格式没有关系。网上有人说,CHM帮助文件不能显示.bmp、.gif格
式的图片,可我尝试了一下。发现.jpg、.bmp、.png、.gif都能正常显示,前提是将.doc Word文档另存
为“筛选过的网页(*.htm;*.html)”。
问题3:打开CHM帮助文件的某页时,弹出类似如下的错误:
“找不到'H:\帮助\Help\查询学生学籍信息.htm'。请确认路径或Internet地址正确。”
制作好CHM帮助文件后,有时候将它移动到另一台计算机或将原来的.htm文件移动到另一个地方,当
再打开CHM帮助文件时,会弹出这样的错误。我觉得应该是这些.htm文件没有被成功编译到.CHM帮助文档
中,可能是软件的安装没有成功,我遇到这种错误时,就是这个原因。起初安装到最后时,说是某个.dll
找不到,可我发现HTML Help Workshop还能使用,就没理会。可就是因为这一点,出现了这个错误。也就
是说,CHM帮助文件必须和原来添加的的.htm文件同时存在,且路径和编译时的保持不变。CHM帮助文档不
能作为一个独立的文档而存在。
解决方法:Windows Server 2003安装HTML Help Workshop出现错误(其它的CHM制作工具如Su
perCHM也不行)。我只好在虚拟机的XP中重新安装它,最后提示安装成功,也能正常使用了,没有出现以上
的错误, 且CHM帮助文档可作为一个独立的文档存在。
问题4:制作好的CHM帮助文档无法显示网页
制作的CHM帮助文件不能带有#的目录中,因为会#会被当成书签。这学期我做了一个C#数据库应用程
序。当把制作好的CHM帮助文件拷贝到带有c#字样的目录下(Debug)中时,所有的。htm都无法显示。我在
制作的C盘和桌面上都能正常打开,就是在那个目录下打开时说无法显示网页,我感觉那个路径名有问题
,就把其中的特殊字符逐个检查了一遍,有".","(",")","#","&"。其中我发现,只有当某个文件夹
名中带有"#"时,CHM帮助文件就无法显示。后来,确定问题就出在这里。原来,"#"不能出现在chm路径中
,否则会被当成书签。
解决方法:将CHM帮助文档中带有#符号的路径改为不含#符号的路径