千家信息网

如何实现C#调用动态unlha32.dll解压Lha后缀的打包文件

发表于:2024-11-20 作者:千家信息网编辑
千家信息网最后更新 2024年11月20日,本篇内容介绍了"如何实现C#调用动态unlha32.dll解压Lha后缀的打包文件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望
千家信息网最后更新 2024年11月20日如何实现C#调用动态unlha32.dll解压Lha后缀的打包文件

本篇内容介绍了"如何实现C#调用动态unlha32.dll解压Lha后缀的打包文件"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

复制代码 代码如下:

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

///


/// '取得DLL的执行情况
///

/// 是否成功
[DllImport("unlha32")]
private static extern Boolean UnlhaGetRunning();

///


/// '文件检查
///

///
///
///
[DllImport("unlha32")]
private static extern Boolean UnlhaCheckArchive(String szFileName, Int32 iMode);

///


/// 文件解压缩
///

///
///
///
///
///
[DllImport("unlha32")]
private static extern int Unlha(int hwnd, string szCmdLine, string szOutput, int dwSize);

///


/// 需要解压的文件
///

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


}

}

"如何实现C#调用动态unlha32.dll解压Lha后缀的打包文件"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

文件 路径 动态 后缀 C# 代码 内容 情况 更多 知识 实用 成功 学有所成 接下来 困境 实际 文章 案例 正在 版本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络安全事故导致的危害英语示范 ice服务器关服mc会怎样 对网络安全主管部门的建议书 水泥行业网络安全标准化标准 快速找差异数据库 计算机考试数据库类 微信小程序向数据库添加数据 企业sfis软件开发 数据库设计应用系统 零基础学软件开发好学吗 哈利波特怎么找回服务器 计算机网络技术的基本功能 怎么看服务器的raid信息 3维软件开发语言 高考志愿数据库多钱 阿里云服务器 连接不上 联想服务器服务 我的世界服务器能用qq登录吗 以下属于关系数据库的有哪些 汽车公告权威数据库 建立财务会计数据库费用 我的世界服务器如何找到别人 查看服务器有多少物理硬盘 崇明区一站式数据库服务商前景 网络安全法规定些什么 软件开发创业培训班 网络安全模式怎么开启音频 贴纸软件开发 数据库现在的时间怎么表达 网络安全应急处置管理办法
0