C#调用动态unlha32.dll解压Lha后缀的打包文件分享

复制代码 代码如下:


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></param>
        /// <param></param>
        /// <returns></returns>
        [DllImport("unlha32")]
        private static extern Boolean UnlhaCheckArchive(String szFileName, Int32 iMode);

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

/// <summary>
        /// 需要解压的文件
        /// </summary>
        /// <param>解压文件路径</param>
        /// <param>解压到路径</param>
        /// <param>是否删除</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;
            }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wjggyx.html