zoukankan      html  css  js  c++  java
  • MSDN帮助集成指南

    介绍 很早以前我就想过将一些常用的HTML Help帮助信息(也就是CHM文件)集成到MSDN库中,但一直都没有找到好的办法。有一天我偶然上了codejoke的网站,发现了它:MSDN Integration,这不就是我梦寐以求的吗?真是梦里寻她千百度,蓦然回首她就在网络某一处 ......而且,更令人喜出往外的是这个实用程序还提供全部的源代码。我下载下来狂研究了一番后,发现它真是个不错的东东。遂将它整理出来以飨那些有同 样需求的弟兄。 起步篇 大 家知道,MSDN库中的信息都是用HTML Help文件以“集合(collection)”的形式组织起来的。一个集合便是一个XML格式化文件,它包含MSDN使用的帮助文件信息。集合使用的文 件有两个,一个是msdnxxx.col,另一个是hhcolreg.dat。前者为实际的集合,包含集合使用的全部html文件清单。这个文件的名字一 般都以“msdn”开始,后缀为“.col”。如2000年6月的信息集合文件名为msdn020.col。hhcolreg.dat文件是集合的注册文 件。它存储有关每个集合的细节信息,如HTML Help文件的位置以及索引文件和版本号标题。因此我们首先要找到这两个文件。 查找 msdnxxx.col 文件 如果你安装了MSDN库的话,用 regedit 实用程序就可以在系统注册表中查找到 msdnxxx.col 文件的位置,其注册表键值是: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\HTML Help Collections\Developer Collections      这里是微软存储HTML Help帮助文件集合的位置。这个键值下会列出语言入口,它说明信息集合使用的是哪种语言。典型的值如0x0409表示英语,每种语言都用不同的值表示。 下一个键值是你最想要的:即当前MSDN首选的集合是哪个。典型的值如:0x0393a0c80,这个值根据拟所安装的MSDN不同而不同。它下面有一项 是Filename,它指定了msdnxxx.col文件在硬盘上的物理存放位置。 查找 hhcolreg.dat 文件 hhcolreg.dat 文件与msdnxxx.col一样也是一个XML格式的文件,它包含集成帮助文件的特定信息。在老版本的MSDN库中,这个文件被放在 “Windows\Help”目录中。后来的版本把这个文件的存放位置移到了“\Documents and Settings\All Users\Application Data\Microsoft\HTML Help\”目录。从5.0版本的shell32.dll开始,我们可以用CSIDL_COMMON_APPDATA标志调用 GetSpecialFolderPath(...)API函数来获取这个文件的存放路径。但是IE后来的版本把这个函数移到了ShFolder.dll 中。因此,我们创建了一个自己的版本来获取这个文件的存放路径,它就叫xtAfxGetSpecialFolderPath(...)。我们还能通过 msdnxxx.col文件中的collectionnum标签来确定hhcolreg.dat文件的存放目录。典型地,如果这个值小于10000,则这 个文件存放在“Windows/Help”目录。 编辑集合文件 现 在,我们找到了hhcolreg.dat和msdnxxx.col两个文件,为了正确集成数据信息,接下来我们要编辑这两个文件。首先来看看 msdnxxx.col,用文本编辑器打开这个文件。在前面的几行里你会发现有两个标签:masterlangid 和 collectionnum。这两个标签对我们要做的事情来说非常重要。masterlangid 告诉我们集合使用的是哪种语言,collectionnum 表示目前处理的是哪个集合。这两个标签典型的值为:        <masterlangid value=1033/>       <collectionnum value=10002/>      集合中的每一个入口都以<Folder>开始,以</Folder>结束。你要关 心的值有三个。两个TitleString标签和一个LangId标签。第一个TitleString标签的值是启动MSDN库后,选中“目录”显示的内 容。第二个TitleString的值是集合的标示符,这个值在集合中必须是唯一的,hhcolreg.dat文件中也要用到它。标签LangId的值就 是masterlangid的值。 下面是典型的集合文件内容前几行例子:        <Folder>    <TitleString value="VC知识库"/>    <FolderOrder value=2/>    <Folder>       <TitleString value="=在线杂志"/>       <FolderOrder value=1/>       <LangId value=1033/>    </Folder>       </Folder>       编辑集合注册入口表文件 接下来我们要更新hhcolreg.dat文件。用文本编辑器打开这个文件。你会注意到每个入口都以<DocCompilation> 标签开始,以</DocCompilation>结束。这里有六个标签是我们要关心的: DocCompId标签的值与msdnxxx.col文件中第二个TitleString标签的值相同。这个值在集合中必须唯一且必须完全匹配! DocCompLanguage标签的值与msdnxxx.col文件中LangId标签的值相同,它必须与masterlangid的值匹配。 ColNum标签是集合编号,它必须与msdnxxx.col文件中collectionnum 的值匹配。 TitleLocation 标签是*.chm 文件存放的全路经名。 IndexLocation 标签为*.chi 文件存放的全路经名。 最后一个是Version标签,用它指定集合信息的版本。 下 面是一个典型的集合注册入口表:        <DocCompilation>    <DocCompId value="xtreme_toolkit"/>    <DocCompLanguage value=1033/>    <LocationHistory>       <ColNum value=10001/>       <TitleLocation value="[full path]Xtreme.chm"/>       <IndexLocation value="[full path]Xtreme.chi"/>       <LocationRef value=""/>       <Version value=2/>    </LocationHistory>       </DocCompilation>     大功告成 编译HTML Help文件时,你必须让编译器产生.chi索引和二进制的目录表,也就是toc.hhc文件。MSDN库需要用到这两个文件。为此,在.hhp工程文件 的[OPTIONS]段里要加上“Create CHI file=Yes”,“Binary TOC=Yes”选项。建议你将.chm文件和.chi文件放在MSDN库的集合目录中,但不一定非要这样做,放在其它地方,只要指定正确的路径也可以。 编辑完集合文件之后,启动MSDN库,选中索引签产生帮助索引。此时会弹出一个对话框告诉你正在产生索引。
  • 相关阅读:
    [翻译]windows下 连接到 bitnami的phpmyadmin
    Redmine 和GitBlit仓库服务器整合
    Xshell出现要继续使用此程序必须应用到最新的更新或使用新版本
    Codeigniter 列出所有控制器和控制器的方法(类似路由列表)
    FastStone Capture 文件名设置小记录
    [转]sourceforge文件下载过慢
    Cacti 添加 CPU 监听
    Cacti 发送警告邮件
    尝试让Virtualbox的Ubuntu可以调整分辨率
    Html5+离线打包创建本地消息
  • 原文地址:https://www.cnblogs.com/adodo1/p/4327831.html
Copyright © 2011-2022 走看看