天天看點

C# 如何生成CHM幫助檔案

    前一段時間應公司要求,讓我開發一個資料庫字段資訊CHM幫助檔案生成軟體。結果當時我就二了,這個東西我隻用過,不知道咋做啊。沒想到老大很随意說一句:"沒事,這個軟體我之前有有源碼,隻不過現在不能用了,你等會參考一下就可以了"。我當時還傻乎乎的謝天謝地,總算有源碼可以參考了。當源代碼發過來以後,我頓時石化了,我。。。。。,那玩意兒用c++builder開發的,硬着頭皮看了一遍,全是帶*指針變量、數組、集合、函數,更要命的是,一個類裡面寫了四五千行沒注視的代碼,函數中五六百行代碼的有幾個。 我說這不是坑人嘛?結果看了一天後,我果斷放棄看了那個源碼了,最後還是的感謝網上活躍的一幫朋友,在一個源碼的幫助下(源碼我不知道怎麼上傳,),終于完成了任務啊,

 吐槽到此為止,言歸正傳,首先如下:

生成事件

C# 如何生成CHM幫助檔案
C# 如何生成CHM幫助檔案

View Code

從方法中我可以看出,我們需要一個hhp檔案,hhc檔案,hhk檔案,然後再執行compile方法就可以了

首先動态生一個hhp,代碼如下:

這樣在項目的根目錄上面就生成了一個hhp檔案

現在就要生成hhc檔案了,它主要就是生成chm檔案左邊顯示樹形的内容,當點選節點,可以超連結要顯示的頁面(其實CHM中的内容都是HTML,你可以直接連接配接靜态網頁,),當然是顯示在右邊,而我的項目中要顯示東西都是動态生成HTML檔案,是以這個生成有些複雜,不過我這裡會截取主要部分代碼講解:

這文法很像HTML,但同時也不是,<UL></UL>代表一級節點,其中中間的 " <LI> <OBJECT type=\"text/sitemap\"><param name=\"Name\" value=\"資料庫伺服器\"><param name=\"Local\" value=\"HTML\\全部對象.htm\"><param name=\"ImageNumber\" value=\"13\"></OBJECT>"這段代碼負責節點内容、連接配接、圖檔顯示功能,如果<UL>内容嵌套的話,則表示下一級節點。還有我定義的modes,它主要負責生成一個Htm檔案(記住用檔案流生成,檔案字尾名不要用html,而要用htm,不然會有錯誤,具體我也不知道啥原因),這樣hhc檔案生成在根目錄下

接下來,則要生成hhk檔案了

它主要負責你索引部分要顯示的内容,這裡生成也很簡單

執行以後就可以在根目錄下生成hhk檔案了

到此為止,生成chm檔案的必須的三大檔案已經搞定了,下面就是compile方法了

滿足上面三個檔案要求,再執行這個方法,一個CHM幫助檔案就可以生成,

其實網上有很多生成chm檔案的工具,但我從沒用過,還好目前我這個用着還可以湊合,而且顯示的樣式可以自己修改成自己喜歡的那種(考你樣式了,)秀秀我的作品(悲催啊,不知道咋吧程式上傳上來,希望有知道的告訴一下),寫起來感覺有點吃力,不好勿噴

C# 如何生成CHM幫助檔案
C# 如何生成CHM幫助檔案