在源码中,你可以学到,FreeBasic 是如何动态加载 DLL 及动态声明 DLL 函数的方法
本例题用 7ZIP.DLL 做例题,也可以学到 用它解压文件的方法
当然也可以压缩,那你自己研究,我没研究。
本例题是 FireFly 工程源码,也可以用文本查看源码。
完整源码,请进QQ群下载。
Type tagINDIVIDUALINFO
dwOriginalSize as Long ' 文件大小
dwCompressedSize as Long ' 压缩后的大小
dwCRC as Long '文件时为 0 文件非0 CRC32位数字
uFlag as Long '
uOSType as Long '
wRatio as UShort '
wDate as UShort '文件日期
wTime as UShort '文件时间
szFilename as ZString *513 '文件名
dummy1 as ZString *3
szAttribute as ZString *8
szMode as ZString *8 '压缩算法
End Type
Type tagEXTRACTINGINFO
dwFileSize as Long '文件大小
dwWriteSize as Long '写入大小
szSourceFileName as ZString *513 '原文件名
dummy1 as ZString *3 '样本 实测为空
szDestFileName as ZString *513 '目的文件名
dummy as ZString *3 '样本实测为空
End Type
Type tagEXTRACTINGINFOEX
exinfo as tagEXTRACTINGINFO
dwCompressedSize as Long '压缩文件的长度;压缩尺寸;压缩规模
dwCRC as Long 'CRC校验码
uOSType as Long '操作系统型
wRatio as Long '比例
wDate as Long '日期
wTime as Long '时间
szAttribute as ZString *8 '属性
szMode as ZString *8 '压缩算法
End Type
Dim Shared SevenZipGetBackGroundMode as Function () as Long
Dim Shared SevenZipSetBackGroundMode as Function (ByVal bBackGroundMode as Long) as Long
Dim Shared SevenZip as Function (ByVal sHWnd as HWnd,ByVal szCmdLine as LPCSTR,ByVal szOutPut as LPCSTR, ByVal dwSize as Long) as Long
Dim Shared SevenZipGetFileCount as Function (ByVal szArcFile as LPCSTR) as Long
Dim Shared SevenZipOpenArchive as Function (ByVal sHWnd as HWnd,ByVal szFilename as LPCSTR, ByVal dwSize as Long) as Long
Dim Shared SevenZipCloseArchive as Function (ByVal hArc as Long) as Long
Dim Shared SevenZipFindFirst as Function (ByVal hArc as Long, ByVal szWildName as LPCSTR,ByVal lpSubInfo as tagINDIVIDUALINFO Ptr) as Long
Dim Shared SevenZipFindNext as Function (ByVal hArc as Long,ByVal lpSubInfo as tagINDIVIDUALINFO Ptr) as Long
Dim Shared SevenZipSetOwnerWindowEx as Function (ByVal sHWnd as HWnd, ByVal lpArcProc as Long) as Long
Dim Shared SevenZipCheckArchive as Function (ByVal szFilename as LPCSTR , ByVal imode as Long) as Long
Dim Shared SevenZipSetCursorMode as Function (ByVal CursorMode as Long) as Long
Dim Shared Lib7zip as Any Ptr '动态加载的7ZIP地址
'--------------------------------------------------------------------------------
Function Pb7zipFileList(ByVal hFile as String,sFile() as String ) as Long '获取7zip文件列表,返回文件个数,=0 表示失败
Dim as Long a,C,U,Uc,I, ArcHandle
Dim as String d,M
Dim u7z as tagINDIVIDUALINFO
If Chek7zipFile(hfile)=0 Then
Function=0
Exit Function
End If
ArcHandle = SevenZipOpenArchive(0, StrPtr(hFile), 0)
Print ArcHandle
If ArcHandle = 0 Then
MessageBox( HWND_FORM1,hFile & Chr(13,10,13,10) & "无法打开文件!文件被保护或者不是7ZIP文件。" ,app.ProductName , _
MB_OK Or MB_ICONERROR Or MB_DEFBUTTON1 Or MB_APPLMODAL )
ReDim sFile(0)
Function = 0
Exit Function
End If
a = SevenZipFindFirst(ArcHandle, "*", @u7z)
U = 0
Uc = 0
Do
If a <> 0 Then Exit Do
U = U + 1
d = u7z.szFilename
。。。。。。。。。。