国产99久久精品_欧美日本韩国一区二区_激情小说综合网_欧美一级二级视频_午夜av电影_日本久久精品视频

最新文章專題視頻專題問答1問答10問答100問答1000問答2000關鍵字專題1關鍵字專題50關鍵字專題500關鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關鍵字專題關鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當前位置: 首頁 - 科技 - 知識百科 - 正文

C#調用動態unlha32.dll解壓Lha后綴的打包文件分享

來源:懂視網 責編:小采 時間:2020-11-27 22:40:33
文檔

C#調用動態unlha32.dll解壓Lha后綴的打包文件分享

C#調用動態unlha32.dll解壓Lha后綴的打包文件分享: 代碼如下:public class LhaUtity { ///取得DLL的版本 [DllImport(unlha32)] private static extern UInt16 UnlhaGetVersion(); /// <summary> /// '取得DLL的執行情況 /// </summary> ///
推薦度:
導讀C#調用動態unlha32.dll解壓Lha后綴的打包文件分享: 代碼如下:public class LhaUtity { ///取得DLL的版本 [DllImport(unlha32)] private static extern UInt16 UnlhaGetVersion(); /// <summary> /// '取得DLL的執行情況 /// </summary> ///

代碼如下:
public class LhaUtity
    {
        ///取得DLL的版本
        [DllImport("unlha32")]
        private static extern UInt16 UnlhaGetVersion();

        /// <summary>
        /// '取得DLL的執行情況
        /// </summary>
        /// <returns>是否成功</returns>
        [DllImport("unlha32")]
        private static extern  Boolean UnlhaGetRunning();

        /// <summary>
        /// '文件檢查
        /// </summary>
        /// <param name="szFileName"></param>
        /// <param name="iMode"></param>
        /// <returns></returns>
        [DllImport("unlha32")]
        private static extern Boolean UnlhaCheckArchive(String szFileName, Int32 iMode);

        /// <summary>
        /// 文件解壓縮
        /// </summary>
        /// <param name="hwnd"></param>
        /// <param name="szCmdLine"></param>
        /// <param name="szOutput"></param>
        /// <param name="dwSize"></param>
        /// <returns></returns>
        [DllImport("unlha32")]
        private static extern int Unlha(int hwnd, string szCmdLine, string szOutput, int dwSize);

        /// <summary>
        /// 需要解壓的文件
        /// </summary>
        /// <param name="archiveFile">解壓文件路徑</param>
        /// <param name="extractDir">解壓到路徑</param>
        /// <param name="isDeleteFile">是否刪除</param>
        public static bool UnCompress(string archiveFile, string extractDir,bool  isDeleteFile)
        {
            string extractFullPath = string.Empty;
            string startPath = AppDomain.CurrentDomain.BaseDirectory;

            if (!System.IO.File.Exists(archiveFile))
            {
                //判斷需要解壓的文件存不存
                throw new Exception(string.Format("需要解壓的{0}不存在", archiveFile));
            }

            try
            {
                UInt16 ver = LhaUtity.UnlhaGetVersion();
            }
            catch (Exception ex)
            {
                throw new Exception("沒找到Unlha32.dll文件");
            }

            if (UnlhaGetRunning())
            {
                throw new Exception("DLL正在執行");
            }


            if (!UnlhaCheckArchive(archiveFile, 0))
            {
                throw new Exception("文件不能被解壓縮");
            }

            //解壓的路徑
            if (string.IsNullOrEmpty(extractDir))
            {
                extractFullPath =string.Format(@"{0}{1}\", startPath,archiveFile.Substring(archiveFile.LastIndexOf("\\")+1,archiveFile.IndexOf(".lha")-1-archiveFile.LastIndexOf("\\")));
            }
            else
            {
                extractFullPath = extractDir;
            }

            if (!System.IO.Directory.Exists(extractFullPath))
            {
                System.IO.Directory.CreateDirectory(extractFullPath);
            }
              


            int ret = Unlha(0, string.Format("x \"{0}\" \"{1}\"", archiveFile, extractFullPath), null, 0);

            if (ret != 0)
            {


                if (ret == 32800)
                {
                    throw new Exception("文件解壓縮取消");
                }
                else
                {
                    throw new Exception("文件解壓縮異常結束");

                }

            }
            else
            {
                if (isDeleteFile)
                {
                    System.IO.File.Delete(archiveFile);
                }

                return true;
            }


        }

}

項目中需要到解壓這類型的文件,無從下手,上網看資料發現是日本常用的壓縮算法之一,

查了很多資料,都沒有好的辦法解包,

后來找到這個dll可以解包的

但是網上的代碼都是VB或者C的

唯有自己寫成C#版本的,其實即使C#調用動態鏈接庫

先到網上下載這個dll,然后把這個DLL放到C:\Windows\System32目錄下

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

C#調用動態unlha32.dll解壓Lha后綴的打包文件分享

C#調用動態unlha32.dll解壓Lha后綴的打包文件分享: 代碼如下:public class LhaUtity { ///取得DLL的版本 [DllImport(unlha32)] private static extern UInt16 UnlhaGetVersion(); /// <summary> /// '取得DLL的執行情況 /// </summary> ///
推薦度:
標簽: 的文件 dll c#
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top
主站蜘蛛池模板: 日韩欧美亚洲 | 青青国产成人久久91网站站 | 欧美日韩性生活 | 久久久久久久国产a∨ | 欧美极品在线观看 | 国产成人精品一区二三区2022 | 欧美综合另类 | 国产成人精品aaaa视频一区 | 亚洲国产精品久久久久666 | 亚洲一区二区三区四 | 精品国产3p一区二区三区 | 欧美视频免费看 | 成人精品一区二区www | 成人美女黄网站色大色费 | 特级一级全黄毛片免费 | 欧美αv日韩αv另类综合 | 老司机精品视频一区二区 | 免费一看一级毛片全播放 | 欧美激情亚洲图片 | 亚洲一区二区三区四区在线观看 | 国产成人一区 | 免费国产小视频在线观看 | 欧美日韩精品一区二区在线播放 | 在线免费视频国产 | 日韩欧美网 | 日本久热 | 日本久久香蕉一本一道 | 亚洲欧美另类自拍 | 中文字幕国产欧美 | 国产偷窥在线观看 | 国产区网址 | 精品久久中文网址 | 日韩亚洲欧美在线 | 欧美视频在线免费 | 国产福利一区二区 | 国产日韩中文字幕 | 日韩 综合| 久久精品国产精品亚洲毛片 | 精品久久久久久久一区二区手机版 | 久久精品1 | 98成人网 |