解壓7ZIP文件和動態加載DLL例題(FF源碼)

  勇芳 2017-11-23 5877


在源碼中,你可以學到,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
      
      。。。。。。。。。。


因國家互聯網安全管理要求,關閉回帖功能。大家需要留言,請使用【勇芳軟件客服】即時聯系勇芳點此打開->>勇芳軟件客服
返回
聯系勇芳
一个人看的www视频播放中文_2012中文字幕电影_亚洲国产成人高清在线观看_中文字幕天堂最新版在线网