Private Type RARHeaderData
ArcName As String * 260
FileName As String * 260
Flags As Long
PackSize As Long
UnpSize As Long
HostOS As Long
FileCRC As Long
FileTime As Long
UnpVer As Long
Method As Long
FileAttr As Long
CmtBuf As String
CmtBufSize As Long
CmtSize As Long
CmtState As Long
End Type
Private Type RAROpenArchiveData
ArcName As String
OpenMode As Long
OpenResult As Long
CmtBuf As String
CmtBufSize As Long
CmtSize As Long
CmtState As Long
End Type
Private Declare Function RAROpenArchive Lib "unrar.dll" (ByRef ArchiveData As RAROpenArchiveData) As Long
Private Declare Function RARCloseArchive Lib "unrar.dll" (ByVal hArcData As Long) As Long
Private Declare Function RARReadHeader Lib "unrar.dll" (ByVal hArcData As Long, ByRef HeaderData As RARHeaderData) As Long
Private Declare Function RARProcessFile Lib "unrar.dll" (ByVal hArcData As Long, ByVal Operation As Long, ByVal DestPath As String, ByVal DestName As String) As Long
Private Declare Sub RARSetChangeVolProc Lib "unrar.dll" (ByVal hArcData As Long, ByVal Mode As Long)
Private Declare Sub RARSetPassword Lib "unrar.dll" (ByVal hArcData As Long, ByVal Password As String)
Private Sub Command5_Click()
End
End Sub
Private Sub RARExecute(Mode As RarOperations, RarFile As String, Optional Password As String)
' Description:-
' Extract file(s) from RAR archive.
' Parameters:-
' Mode = Operation to perform on RAR Archive
' RARFile = RAR Archive filename
' sPassword = Password (Optional)
Dim lHandle As Long
Dim iStatus As Integer
Dim uRAR As RAROpenArchiveData
Dim uHeader As RARHeaderData
Dim sStat As String, Ret As Long
If iStatus = ERAR_BAD_DATA Then Erro ("File header broken")
RARCloseArchive lHandle
End Sub
Private Sub Form_Load()
Dim Vals() As String, Msg As String
Dim Command As String
Command = "x " & "D:\外语学习\lhut3227\文档\UnRarOCX.rar" & " 0" '在这里用Commondilog 来确定你的文件路径。“X”,“0” 应该保留哦
If Command = "" Then
Msg = "VBUNRAR.EXE. This is a simple example of UNRAR.DLL usage" & vbCrLf & vbCrLf
Msg = Msg & "Syntax:" & vbCrLf
Msg = Msg & "VBUNRAR X <Archive> <Password> extract archive contents" & vbCrLf
Msg = Msg & "VBUNRAR T <Archive> <Password> test archive contents" & vbCrLf
Msg = Msg & "VBUNRAR L <Archive> <Password> view archive contents"
MsgBox Msg, vbApplicationModal + vbInformation, "VBUnRAR"
End
End If
Vals = Split(Command, " ")
ReDim Preserve Vals(2)
If Vals(0) = "" Or Vals(1) = "" Then Erro ("Missing arguments!")
Select Case UCase(Vals(0))
Case "X"
RARExecute OP_EXTRACT, Vals(1), Vals(2)
Case "T"
RARExecute OP_TEST, Vals(1), Vals(2)
Case "L"
RARExecute OP_LIST, Vals(1), Vals(2)
Case Else
Erro "Invalid Arguments!"
End Select
Command5.Enabled = True
End Sub
Private Sub OpenError(ErroNum As Long, ArcName As String)
Select Case ErroNum
Case ERAR_NO_MEMORY
Erro "Not enough memory"
Case ERAR_EOPEN:
Erro "Cannot open " & ArcName
Case ERAR_BAD_ARCHIVE:
Erro ArcName & " is not RAR archive"
Case ERAR_BAD_DATA:
Erro ArcName & ": archive header broken"
End Select
End Sub
Private Sub ProcessError(ErroNum As Long)
Select Case ErroNum
Case ERAR_UNKNOWN_FORMAT
Erro "Unknown archive format"
Case ERAR_BAD_ARCHIVE:
Erro "Bad volume"
Case ERAR_ECREATE:
Erro "File create error"
Case ERAR_EOPEN:
Erro "Volume open error"
Case ERAR_ECLOSE:
Erro "File close error"
Case ERAR_EREAD:
Erro "Read error"
Case ERAR_EWRITE:
Erro "Write error"
Case ERAR_BAD_DATA:
Erro "CRC error"
End Select
End Sub
Private Sub Erro(Msg As String)
MsgBox Msg, vbApplicationModal + vbExclamation, "Error"
End
End Sub
<命令>
a 添加文件到压缩文件
c 添加压缩文件注释
cf 添加文件注释
cw 写入压缩文件注释到文件
d 删除压缩文件中的文件
e 解压压缩文件到当前目录
f 刷新压缩文件中的文件
i[参数]=<串> 在压缩文件中查找字符串
k 锁定压缩文件
l[t] 列出压缩文件[技术信息]
m[f] 移动到压缩文件[仅对文件]
p 打印文件到标准输出设备
r 修复压缩文件
rc 重建丢失的卷
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[名字|-] 转换压缩文件为自解压格式或转换回压缩文件
t 测试压缩文件
u 更新压缩文件中的文件
v[t] 详细列出压缩文件[技术信息]
x 用绝对路径解压文件
<开关>
- 停止扫描
ac 压缩或解压后清除文件属性
ad 添加压缩文件名到目标路径
ag[格式] 使用当前日期生成压缩文件名
ao 添加具有压缩属性的文件
ap<格式> 添加路径到压缩文件中
as 同步压缩文件内容
av 添加用户身份校验(仅注册版本可用)
av- 禁用用户身份校验
c- 禁用注释显示
cfg- 禁用读取配置
cl 名称转换为小写
cu 名称转换为大写
df 压缩后删除文件
dh 打开共享文件
ds 对固实压缩文件禁用名称排序
e<属性> 设置文件排除属性
ed 不添加空目录
en 不添加"压缩文件结束"标志
ep 从名称中排除路径
ep1 从名称中排除基本目录
ep2 展开为完整路径
f 刷新文件
hp[密码] 同时加密文件数据和文件头
idp 禁用百分比显示
ieml[属性] 用 E-mail 发送压缩文件
ierr 发送所有消息到标准错误设备
ilog[名称] 把错误写到日志文件(只有注册版本可用)
inul 禁用所有消息
ioff 完成一个操作后关闭 PC 电源
isnd 启用声音
k 锁定压缩文件
kb 保留损坏的已解压文件
m<0..5> 设置压缩级别(0-存储...3-默认...5-最大)
mc<参数> 设置高级压缩参数
md<大小> 以KB为单位的字典大小(64,128,256,512,1024,2048,4096 or A-G)
ms[ext;ext] 指定存储的文件类型
o+ 覆盖已存在文件
o- 不覆盖已存在文件
os 保存 NTFS 流
ow 保存或恢复文件所有者和组
p[密码] 设置密码
p- 不询问密码
r 递归子目录
r0 仅递归通配符名称的子目录
ri<P>[:<S>] 设置优先级(0-默认,1-最小..15-最大)和以毫秒为单位的休眠时间
rr[N] 添加数据恢复记录
rv[N] 创建恢复卷
s[<N>,v[-],e] 创建固实压缩文件
s- 禁用固实压缩文件
sfx[名称] 创建自解压压缩文件
t 压缩后测试文件
ta<日期> 添加日期 <日期> 后修改的文件,日期格式 YYYYMMDDHHMMSS
tb<日期> 添加日期 <日期> 前修改的文件,日期格式 YYYYMMDDHHMMSS
tk 保留原始压缩文件时间
tl 设置压缩文件时间为最新文件时间
tn<时间> 添加 <时间> 以后的文件
to<时间> 添加 <时间> 以前的文件
u 更新文件
v 自动检测创建卷的大小或者列出所有的卷
v<大小>[k,b] 创建卷大小=<大小>*1000 [*1024, *1]
vd 创建容量前清除磁盘内容
ver[n] 文件版本控制
vn 使用旧风格的卷命名方案
vp 每卷之前暂停
w<路径> 指定工作目录
x<文件> 排除指定的文件
x@ 从标准输入设备读取要排除的文件名
x@<列表> 排除指定列表文件中的文件
y 假设对全部询问都回答是
z<文件> 从文件读取压缩文件注释