国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

C#生成CHM文件(外篇使用hha.dll)

2019-11-17 02:59:25
字體:
來源:轉載
供稿:網友

C#生成CHM文件(外篇使用hha.dll)

在《C#生成CHM文件》一系列中,我們是以微軟自帶的hhc.exe來編譯CHM文件的,這樣有一個弊端就是當我們的機器里面并沒有裝hhc.exe就會報錯,這通常在盜版的Windows系統比較常見,而正版的windows會默認幫我們安裝hhc.exe,一般的默認路徑是C:/PRogram Files/HTML Help Workshop或者C:/Program Files(X86)/HTML Help Workshop。

為了解決這個問題,我們可以使用hha.dll來編譯CHM文件,這也是許多CHM生成軟件這樣做的。

網上關于hha.dll的資料比較少,因為微軟并沒有公布hha.dll的函數,不過還是有幾個牛人將函數給我們弄出來了,比如“夜聞香”,本文是在此基礎上做的。

實際上其CHM項目編譯器的HHA.DLL中提供了名為HHA_CompileHPP的導出函數,實現了對.hpp的CHM項目文件直接進行編譯,并通過兩個回調函數通知用戶當前編譯進度。

下面是HHA_CompileHPP的原型

BOOL WINAPI HHA_CompileHHP(PCSTR pszHhpFile, FARPROC pLogString, FARPROC pProgress, INT nRes);

我們可以使用DllImport來調用hha.dll中的函數.

主要的代碼如下:

 string log1;        string log2;        delegate bool GetInfo(string log);        //編譯信息        public bool GetInfo1(string log)        {            log1 = log;            return true;        }        //進度信息        public bool GetInfo2(string log)        {            log2 = log;            return true;        }        [DllImport("hha.dll")]        private extern static void HHA_CompileHHP(string hhpFile, GetInfo g1, GetInfo g2, int stack);        public void Compile()        {            using (OpenFileDialog ofd=new OpenFileDialog())            {                ofd.Filter = "CHM項目文件|*.hhp";                ofd.ShowDialog();                if (ofd.FileName!="")                {                    HHA_CompileHHP(ofd.FileName, GetInfo1, GetInfo2, 0);                    MessageBox.Show("編譯成功");                }            }        }

為了簡單方便,我們這里是直接編譯已經生生成的hhp文件(可以使用alexiseditor的設置選項,去掉“刪除臨時文件”來獲得),有興趣的朋友可以更加深入,比如獲得編譯進度信息,顯示編譯進度等等。。。。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永兴县| 长垣县| 沁阳市| 东乡族自治县| 韩城市| 阜康市| 建宁县| 天门市| 瓦房店市| 江川县| 冷水江市| 通城县| 芜湖市| 铜梁县| 扶风县| 叙永县| 石首市| 双峰县| 长海县| 思茅市| 凤台县| 广安市| 乌兰察布市| 苍溪县| 磐石市| 新龙县| 芦山县| 蓬安县| 崇阳县| 仙居县| 合肥市| 丽水市| 寻甸| 万全县| 应用必备| 金平| 旅游| 镇赉县| 浦县| 壤塘县| 班戈县|