-
Notifications
You must be signed in to change notification settings - Fork 0
ChangeVol
Jiowcl edited this page Dec 4, 2024
·
2 revisions
; UnRAR ChangeVol Proc
Procedure.i UnRARChangeVolProc(*ArcName, Mode.i)
PrintN("Change Vol: " + PeekS(*ArcName, -1, #PB_UTF8) + ", Mode: " + Mode)
ProcedureReturn #True
EndProcedure
EnableExplicit
IncludeFile "../Core/UnRAR.pbi"
Global lpszLibUnRARDll.s = "UnRAR.dll"
Global lpszSampleFilePath.s = "TestFile/mexample.part1.rar"
Global hLibrary.i = UnRARDllOpen(lpszLibUnRARDll)
; UnRAR ChangeVol Proc
Procedure.i UnRARChangeVolProc(*ArcName, Mode.i)
PrintN("Change Vol: " + PeekS(*ArcName, -1, #PB_UTF8) + ", Mode: " + Mode)
ProcedureReturn #True
EndProcedure
If hLibrary
OpenConsole()
Define HeaderData.RARHeaderDataEx
Define ArchiveData.RAROpenArchiveDataEx
Define ArchiveDataCmt.s = Space(16383) + Chr(0)
ArchiveData\ArcNameW = @lpszSampleFilePath
ArchiveData\OpenMode = #RAR_OM_EXTRACT
ArchiveData\CmtBuf = @ArchiveDataCmt
ArchiveData\CmtBufSize = SizeOf(ArchiveDataCmt)
Define hRARArchiveHandle.i = RAROpenArchiveEx(hLibrary, @ArchiveData)
If ArchiveData\OpenResult = 0
RARSetChangeVolProc(hLibrary, hRARArchiveHandle, @UnRARChangeVolProc())
PrintN("Source: " + lpszSampleFilePath)
While RARReadHeaderEx(hLibrary, hRARArchiveHandle, @HeaderData) = 0
Define extractFile.s = PeekS(@HeaderData\FileNameW)
Define hUnRARProcCode.i = RARProcessFileW(hLibrary, hRARArchiveHandle, #RAR_TEST, "", "")
PrintN("Test File: " + extractFile)
Wend
EndIf
Input()
CloseConsole()
UnRARDllClose(hLibrary)
EndIf
EnableExplicit
IncludeFile "../../Core/Enums.pbi"
IncludeFile "../../Core/UnRARWrapper.pbi"
UseModule UnRARWrapper
Global lpszLibUnRARDll.s = "UnRAR.dll"
Global lpszSampleFilePath.s = "TestFile/mexample.part1.rar"
; UnRAR ChangeVol Proc
Procedure.i UnRARChangeVolProc(*ArcName, Mode.i)
PrintN("Change Vol: " + PeekS(*ArcName, -1, #PB_UTF8) + ", Mode: " + Mode)
ProcedureReturn #True
EndProcedure
If DllOpen(lpszLibUnRARDll)
OpenConsole()
Define HeaderData.RARHeaderDataEx
Define ArchiveData.RAROpenArchiveDataEx
Define ArchiveDataCmt.s = Space(16383) + Chr(0)
ArchiveData\ArcNameW = @lpszSampleFilePath
ArchiveData\OpenMode = #RAR_OM_EXTRACT
ArchiveData\CmtBuf = @ArchiveDataCmt
ArchiveData\CmtBufSize = SizeOf(ArchiveDataCmt)
Define hRARArchiveHandle.i = UnRARArchive::OpenArchiveEx(@ArchiveData)
If ArchiveData\OpenResult = 0
UnRARArchive::SetChangeVolProc(hRARArchiveHandle, @UnRARChangeVolProc())
PrintN("Source: " + lpszSampleFilePath)
While UnRARArchive::ReadHeaderEx(hRARArchiveHandle, @HeaderData) = 0
Define extractFile.s = PeekS(@HeaderData\FileNameW)
Define hUnRARProcCode.i = UnRARArchive::ProcessFileW(hRARArchiveHandle, #RAR_TEST, "", "")
PrintN("Test File: " + extractFile)
Wend
EndIf
Input()
CloseConsole()
DllClose()
EndIf