上接: 關於MSDN for VB6和VC6 在網上搜了半天關於微軟協助文檔集合, hhcolreg.dat ,*.col 檔案 都沒搜到點有用的. 於是自己分析了一下這兩個檔案. (目的是為了把XP系統中的SQL80.col協助集複製到WIN7系統來,結果也實現了,略.) _________________________________________________________________________________________________ MSDN for VS6 *.COL 協助文檔集合 檔案解讀 2:39 2011/10/27
yurenchen _________________________________________________________________________________________________ *.chm 是協助文檔. *.chw 是協助文檔索引快取檔案. *.chi 是協助文檔目錄檔案(多數*.chm文檔是整合了目錄的,有的是分類開的) *.COL 檔案是微軟協助文檔的集合(內容為XML). 可以用hh.exe 開啟,裡面定義了集合中包括了哪些書目,和集合的樹形結構. hhcolreg.dat (內容為XML)存在於 %windir%\help\ 和 %AllUsersProfile%\Microsoft\HTML Help\ 檔案夾內. 檔案隨便放在這兩個檔案夾中任意一個都可以,效果相同. *.COL檔案中定義了文檔集合包含哪些書目,但沒有定義每一本書的具體路徑,所以沒有安裝協助文檔的時候,直接開啟 *.COL檔案會出現無法開啟檔案的情況. *.COL中引用的書目的具體資訊定義就定義在了hhcolreg.dat 檔案中. ____________________________________ ① *.COL 檔案結構. 假設檔案名稱為XXXX.COL <XML> <HTMLHelpCollection> <collectionnum value=CCCC1/> 集合編號 <Folders> <Folder> <TitleString value="DDDD"/> 目錄的標題 <FolderOrder value=EEEE/> 目錄的序號 </Folder> </Folders> </HTMLHelpCollection> </XML> (一些非必要元素(刪除後文檔仍能開啟的元素,下同)有刪減) ____________________________________ ② hhcolreg.dat 檔案結構 <XML> <HTMLHelpDocInfo> <Collections> 開啟過的*.col檔案都會列在這裡(可以刪除此段,開啟*.col檔案時自動產生) <Collection> <ColNum value=cccc3/> 集合編號 <ColName value="xxxx.COL"/> *.col檔案路徑 </Collection> </Collections> <DocCompilations> 圖書集合的定義(圖書的路徑,編號 以及 所屬集合) <DocCompilation> <DocCompId value="dddd"/> 書目編號 <LocationHistory> <ColNum value=cccc2/> 集合編號 <TitleLocation value="ffff.chm"/> 圖書內容檔案路徑 <IndexLocation value="gggg.chi"/> 圖書目錄檔案路徑 </LocationHistory> </DocCompilation> </DocCompilations> </HTMLHelpDocInfo> </XML> (一些非必要元素有刪減) _____________________________________ *.col 檔案可以放在任意目錄內, *.chm,*.chi等協助文檔也可以放在任意目錄內,但要與hhcolreg.dat 檔案內定義的一致. 前面兩個都到處亂跑,找起來肯定不容易,所以 hhcolreg.dat 就必須老老實實的呆在那幾個固定的檔案夾裡面了, 以方便hh.exe 找到它,並通過它找到散落在世界不同角落的... ----龍珠? ----難道這是龍珠雷達? . 是不同角落的 協助文檔(*.chm 和 *.chi) . ______________________________________ 同一本圖書 對應的 集合編號,和在*.col檔案的集合編號一致. *.col檔案開啟後,在hhcolreg.dat 中的記錄 的集合編號也一致. 即 同一圖書 CCCC1=cccc2=cccc3,否則無法開啟. *.COL中DDDD可以是非'='開頭的自訂字串,表示目錄的名稱, 也可以是 '=書目編號',例如 '=dddd' 表示此出目錄是 集合中定義的書目編號為dddd的這本圖書. 圖書內容檔案 和 圖書目錄檔案 名稱一般是一致的,即ffff=gggg,指出檔案的所在. 執行個體 ① "C:\Users\Phoenix\Desktop\VC6.col" 檔案內容 ②"C:\Users\Phoenix\Desktop\VC6.col"開啟效果
③ "C:\Users\All Users\Microsoft\HTML Help\hhcolreg.dat" 檔案內容
④"C:\Users\All Users\Microsoft\HTML Help\hhcolreg.dat" 開啟效果
上面4幅圖片已經很明了了吧. 協助文檔集合有什麼用? 比如你要查某個函數,又不確定它在哪個chm裡面,就只有一個一個開啟找了,或者直接在協助文檔集合裡面尋找. ps: 有時間用hta寫個小工具來整理電腦上所有的chm文檔. |