SevenZip

SevenZip 是内置压缩模块,可以压缩和解压许多 支持的方法: 7z、XZ、BZIP2、GZIP、TAR、ZIP 和 WIM。
此外,它还可以解压 AR、ARJ、CAB、CHM、CPIO、CramFS、DMG、EXT、FAT、GPT、HFS、IHEX、ISO、LZH、LZMA、MBR、MSI、NSIS、NTFS、QCOW2、RAR、RPM、SquashFS、UDF、UEFI、VDI、VHD、VMDK、WIM、XAR 和 Z。
它还可以创建自解压可执行文件。

7-Zip 由 Igor Pavlov 创建 - www.7-zip.org
DLL 版本编译自 https://github.com/ytakanashi/7-zip32_ungarbled

SevenZip() 从资源中加载 DLL 模块,并返回包含各方法的对象。

OutputVar := SevenZip(Hwnd)
OutputVar(输出变量)

用于存储对象的变量名称。该对象将用于压缩、解压缩和其他 7-Zip 功能。

Hwnd(窗口句柄,可选)

GUI hwnd。当 7-Zip 执行压缩或解压缩时,将禁用与该 GUI 的交互。

属性

方法

Add

Add 将文件添加到压缩包;如果压缩包不存在,则会创建它。

OutputVar := zip.Add(Archive, Files, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

Archive(压缩包)

压缩包文件名,或要添加文件的目标路径。

Files(文件)

要添加到压缩包的一个或多个文件、路径或文件模式。
传递多个文件时,需要用换行符分隔,例如 “C:\File1.txt`nC:\File`nC:\MyDir”

Options(选项,可选)

请参阅 7-Zip Add 命令帮助中支持的开关。

AutoZip

自动将文件添加到压缩包的方法。
如果压缩包已经存在,将按给定选项重新压缩(提取、删除并重新压缩);如果使用了不同方法,也会进行转换,原始压缩包会被删除!
如果给定的文件或路径不是压缩包或文件夹,将使用相同路径/名称并追加方法名作为扩展名来压缩它。

OutputVar := zip.AutoZip(Archive, Method, CompressionLevel, Threads, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

Archive(压缩包)

要压缩的现有压缩包、文件或文件夹的文件名或路径。

Method(方法,可选)

支持的方法之一。该名称也将用作新的文件扩展名。
默认值:zip。

CompressionLevel(压缩级别,可选)

新压缩包的压缩级别:0、1、3、5、7、9。请参阅支持的压缩级别列表
默认值:最大压缩级别 9。

Threads(线程数,可选)

使用多少线程进行压缩。
默认值:2 个线程。

Options(选项,可选)

适用于 Add 命令的附加选项。

Check

检查文件是否为压缩包文件(检查标头),并可选择检查每个文件的内容和 CRC。

OutputVar := zip.Check(Archive, Mode)
OutputVar(输出变量)

如果文件是压缩包,则存储 true / 1;如果文件不是压缩包或压缩包已损坏,则存储 false / 0 的变量名称。

Archive(压缩包)

现有压缩包的文件名或路径。

Mode(模式,可选)

检查方式:

  • 0:仅检查标头。
  • 1:另外检查压缩包是否损坏。
  • 2:另外检查压缩包中所有文件的 CRC。

默认值:0。

ClearOwnerWindow

停止向先前通过 SetOwnerWindow 定义的窗口发送消息。

OutputVar := zip.ClearOwnerWindow()
OutputVar(输出变量)

变量名称,成功时存储 true / 1,如果没有设置窗口来接收消息,则存储 false / 0。

Close

关闭先前通过 Open 打开的压缩包。

OutputVar := zip.Check(ArchiveHandle)
OutputVar(输出变量)

如果文件是压缩包,则存储 true / 1;如果文件不是压缩包或压缩包已损坏,则存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

Cmd

运行 7-Zip 命令行。请参阅 命令行语法

OutputVar := zip.Cmd(CommandLine)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

CommandLine(命令行)

所有功能都可以通过命令行运行。请参阅 命令行语法

ConfigDialog

显示版本和版权信息。

zip.ConfigDialog()

Delete

Delete 压缩包中的文件。

OutputVar := zip.Delete(Archive, Files, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

Archive(压缩包)

要从中删除文件的压缩包文件名或路径。

Files(文件)

要从压缩包中删除的一个或多个文件、路径或文件模式。
传递多个文件时,需要用换行符分隔,例如 “C:\File1.txt`nC:\File`nC:\MyDir”

Options(选项,可选)

请参阅 7-Zip Delete() 帮助中支持的开关。

Extract

Extract 从压缩包中提取文件,并保留完整路径。

OutputVar := zip.Extract(Archive, Dir, Files, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

Archive(压缩包)

要从中提取文件的压缩包文件名或路径。

Dir(目录,可选)

输出目录。

Files(文件,可选)

要从压缩包中提取的一个或多个文件、路径或文件模式。
传递多个文件时,需要用换行符分隔,例如 “C:\File1.txt`nC:\File`nC:\MyDir”

Options(选项,可选)

请参阅 7-Zip Extract() 帮助中支持的开关。

ExtractMem

Extract 从压缩包中提取文件,并保留完整路径。
此命令支持提取最大 4 GB 的文件;更大的文件请使用 ExtractMemEx

OutputVar := zip.Extract(Buffer, Archive, File, Options)
OutputVar(输出变量)

用于存储缓冲区大小(未压缩文件大小)的变量名称。

Buffer(缓冲区)

ByRef 变量,用于接收提取的数据。

Archive(压缩包)

要从中提取文件的压缩包文件名或路径。

File(文件,可选)

要从压缩包中提取的文件。

Options(选项,可选)

请参阅 7-Zip Extract() 帮助中支持的开关。

ExtractMemEx

Extract 从压缩包中提取文件,并保留完整路径。

OutputVar := zip.Extract(Buffer, Archive, File, Options)
OutputVar(输出变量)

用于存储缓冲区大小(未压缩文件大小)的变量名称。

Buffer(缓冲区)

ByRef 变量,用于接收提取的数据。

Archive(压缩包)

要从中提取文件的压缩包文件名或路径。

File(文件,可选)

要从压缩包中提取的文件。

Options(选项,可选)

请参阅 7-Zip Extract() 帮助中支持的开关。

ExtractRoot

Extract 从压缩包中提取文件,并保留完整路径。

OutputVar := zip.ExtractRoot(Archive, Dir, Files, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

Archive(压缩包)

要从中提取文件的压缩包文件名或路径。

Dir(目录,可选)

输出目录。

Files(文件,可选)

要从压缩包中提取的一个或多个文件、路径或文件模式。
传递多个文件时,需要用换行符分隔,例如 “C:\File1.txt`nC:\File`nC:\MyDir”

Options(选项,可选)

请参阅 7-Zip Extract() 帮助中支持的开关。

FindFirst

查找压缩包中的第一个文件。另请参阅 FindNext

OutputVar := zip.FindFirst(ArchiveHandle, FilePattern)
OutputVar(输出变量)

用于存储 INDIVIDUALINFO 结构的变量的名称。

typedef struct {
        DWORD dwOriginalSize;
        DWORD dwCompressedSize;
        DWORD dwCRC;
        UINT uFlag;
        UINT uOS Type;
        WORT wRatio;
        WORT wDate;
        WORT wTime;
        char szFileName [FNAME_MAX32 + 1];
        char dummy1 [3];
        char szAttribute [8];
        char szMode [8];
    } INDIVIDUALINFO;
  • dwOriginalSize:原始文件大小。
  • dwCompressedSize:压缩文件大小。
  • dwCRC:文件校验和。
  • uFlag:始终为 0。
  • uOSType:操作系统,当前始终为0。
  • wRatio:压缩比。对于固实压缩包始终为 0。
  • wDate:更改时间。
  • wTime:更新时间。
  • szFileName:文件名。
  • szAttribute:文件属性。
  • szMode:压缩方式。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

FilePattern(文件模式,可选)

用于搜索的文件模式,FindNext 将继续使用相同的文件模式。

FindNext

查找压缩包中的下一个文件。

OutputVar := zip.FindNext(ArchiveHandle, lpINDIVIDUALINFO)
OutputVar(输出变量)

变量名,成功时存储 0,如果找不到更多文件则存储 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpINDIVIDUALINFO(INDIVIDUALINFO 指针)

指向用于搜索的 INDIVIDUALINFO 结构的指针。

GetArcAccessTimeEx

获取压缩包访问时间。

OutputVar := zip.GetArcAccessTimeEx(ArchiveHandle, lpFILETIME)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpFILETIME(FILETIME 指针)

指向 FILETIME 结构的指针以接收结果。通过 getvar(time:=0) 将 64 位值保存在变量中。

GetArcCompressedSize

获取压缩包的压缩大小。

OutputVar := zip.GetArcCompressedSize(ArchiveHandle)
OutputVar(输出变量)

用于存储压缩大小的变量名称;如果压缩包是固实压缩包,则返回 -1,此时需要使用 GetArcCompressedSizeEx

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetArcCompressedSizeEx

获取压缩包的压缩大小。

OutputVar := zip.GetArcCompressedSizeEx(ArchiveHandle, lpINT64)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpINT64(INT64 指针)

指向用于接收压缩大小的变量的指针。传递 getvar(size:=0) 或指向缓冲区的指针。

GetArcCreateTimeEx

获取压缩包创建时间。

OutputVar := zip.GetArcAccessTimeEx(ArchiveHandle, lpFILETIME)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpFILETIME(FILETIME 指针)

指向 FILETIME 结构的指针以接收结果。通过 getvar(time:=0) 将 64 位值保存在变量中。

GetArcDate

获取压缩包日期。

OutputVar := zip.GetArcDate(ArchiveHandle)
OutputVar(输出变量)

用于存储 DOS 格式压缩包日期的变量名称,如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetArcFileName

获取压缩包文件名。

OutputVar := zip.GetArcDate(ArchiveHandle)
OutputVar(输出变量)

用于存储压缩包文件名的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetArcFileSize

获取压缩包大小。

OutputVar := zip.GetArcFileSize(ArchiveHandle)
OutputVar(输出变量)

用于存储压缩包大小的变量名称,如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetArcFileSizeEx

获取压缩包大小。

OutputVar := zip.GetArcFileSizeEx(ArchiveHandle, lpINT64)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpINT64(INT64 指针)

指向缓冲区的指针以获取大小。使用 getvar(size:=0) 或传递缓冲区指针。

GetArcOriginalSize

获取压缩包的未压缩大小。

OutputVar := zip.GetArcOriginalSize(ArchiveHandle)
OutputVar(输出变量)

用于存储压缩包大小的变量名称,如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetArcOriginalSizeEx

获取压缩包的未压缩大小。

OutputVar := zip.GetArcOriginalSizeEx(ArchiveHandle, lpINT64)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpINT64(INT64 指针)

指向缓冲区的指针以获取大小。使用 getvar(size:=0) 或传递缓冲区指针。

GetArcOSType

获取压缩包的未压缩大小。

OutputVar := zip.GetArcOSType(ArchiveHandle)
OutputVar(输出变量)

用于存储操作系统类型的变量名称。

0 : MS-DOS  1 : PRIMOS  2 : UNIX    3 : AMIGA
4 : MAC-OS  5 : OS/2    6 : APPLE GS    7 : ATARI ST
8 : NEXT    9 : VAX VMS 10: In addition.
11: OS9     12: OS/68K  13: OS/386  14: HUMAN
15: CP/M    16: FLEX    17: Runser
18: VM CMS  19: Z SYSTEM    20: TOPS20  21: Windows NTFS
-1: 错误。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetArcRatio

获取压缩包的压缩率,500 表示 50%。

OutputVar := zip.GetArcRatio(ArchiveHandle)
OutputVar(输出变量)

用于存储压缩比的变量名称(固实压缩包为 0),如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetArcTime

获取 DOS 格式的压缩包时间。

OutputVar := zip.GetArcTime(ArchiveHandle)
OutputVar(输出变量)

用于存储 MSDOS 格式压缩包时间的变量名称,如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetArcWriteTimeEx

获取压缩包修改时间。

OutputVar := zip.GetArcWriteTimeEx(ArchiveHandle, lpFILETIME)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpFILETIME(FILETIME 指针)

指向 FILETIME 结构的指针以接收时间。通过 getvar(time:=0) 将 64 位值保存在变量中。

GetAttribute

获取当前文件的属性,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetAttribute(ArchiveHandle)
OutputVar(输出变量)

用于存储文件属性的变量名称,如果出错则为 -1。

    0x01    FA_RDONLY       只读文件。
    0x02    FA_HIDDEN       隐藏文件。
    0x04    FA_SYSTEM       系统文件。
    0x08    FA_LABEL        卷标。
    0x10    FA_DIREC        目录。
    0x20    FA_ARCH         存档位。
    0x40    FA_ENCRYPTED    文件受密码保护。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetBackGroundMode

检查 7-Zip 是否处于后台模式。

OutputVar := zip.GetBackGroundMode()
OutputVar(输出变量)

如果 7-Zip 处于后台模式,则存储 true / 1 的变量名称,否则存储 false / 0。

GetCompressedSize

获取当前文件的压缩大小,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetCompressedSize(ArchiveHandle)
OutputVar(输出变量)

用于存储压缩文件大小的变量名称,如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetCompressedSizeEx

获取当前文件的压缩大小,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetArcWriteTimeEx(ArchiveHandle, lpINT64)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpINT64(INT64 指针)

指向缓冲区的指针以接收压缩大小。通过 getvar(size:=0) 将 64 位值保存在变量中。

GetCRC

获取当前文件的 CRC,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetCRC(ArchiveHandle)
OutputVar(输出变量)

用于存储代码页标识符的变量的名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetCP

获取代码页标识符。

OutputVar := zip.GetCP()
OutputVar(输出变量)

用于存储代码页标识符的变量的名称。

GetCursorInterval

获取光标旋转速度。

OutputVar := zip.GetCursorInterval()
OutputVar(输出变量)

存储光标速度的变量名称。

GetCursorMode

检查光标在 7-Zip 操作中是否可见。

OutputVar := zip.GetCursorMode()
OutputVar(输出变量)

用于存储 true / 1(如果可见)或 false / 0(如果隐藏)的变量名称。

GetDate

获取当前文件的日期,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetDate(ArchiveHandle)
OutputVar(输出变量)

用于存储 MSDOS 格式日期的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetDefaultPassword

获取压缩包受密码保护且未指定密码时使用的默认密码。

OutputVar := zip.GetDefaultPassword(ArchiveHandle)
OutputVar(输出变量)

用于存储密码的变量的名称。

ArchiveHandle(压缩包句柄,可选)

先前返回的句柄 Open
当没有给出句柄时,返回全局密码。

GetFileCount

获取压缩包中的文件数量。

OutputVar := zip.GetFileCount(Archive)
OutputVar(输出变量)

用于存储压缩包中文件数量的变量名称。

Archive(压缩包)

压缩包的文件名或路径。

GetFileName

获取当前文件的文件名,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetFileName(ArchiveHandle)
OutputVar(输出变量)

用于存储文件名的变量的名称。

ArchiveHandle(压缩包句柄)

先前返回的句柄 Open
当没有给出句柄时,返回全局密码。

GetLastError

获取当前文件的文件名,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetLastError(lpINT)
OutputVar(输出变量)

用于存储错误代码的变量的名称。

lpINT (optional)

指向保存错误代码的缓冲区的指针。使用 getvar(err:=0) 将代码保存在变量中。

GetMethod

获取当前文件的压缩方法名称,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetMethod(ArchiveHandle)
OutputVar(输出变量)

用于存储压缩方法的变量的名称。

ArchiveHandle(压缩包句柄)

先前返回的句柄 Open
当没有给出句柄时,返回全局密码。

GetOriginalSize

获取当前文件的未压缩大小,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetOriginalSize(ArchiveHandle)
OutputVar(输出变量)

用于存储未压缩文件大小的变量名称,如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetOriginalSizeEx

获取当前文件的未压缩大小,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetOriginalSizeEx(ArchiveHandle, lpINT64)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpINT64(INT64 指针)

指向缓冲区的指针,用于接收未压缩的大小。使用 getvar(size:=0) 将 64 位值保存在变量中。

GetOSType

获取当前文件的操作系统类型,该文件由 FindFirstFindNext 找到。
目前除非出现错误,否则仅返回 0。

OutputVar := zip.GetOSType(ArchiveHandle)
OutputVar(输出变量)

变量名称,成功时在其中存储 0,任何其他值表示错误。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetRatio

获取当前文件的压缩比,该文件由 FindFirstFindNext 找到。
500 表示 50%。

OutputVar := zip.GetRatio(ArchiveHandle)
OutputVar(输出变量)

用于存储压缩比的变量名称(固实压缩包为 0),如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetRunning

检查 7-Zip 当前是否正在进行压缩或解压缩操作。

OutputVar := zip.GetRunning()
OutputVar(输出变量)

如果 7-Zip 当前正在运行,则在其中存储 true / 1 的变量名称,否则存储 false / 0。

GetSubVersion

获取 7-Zip 的子版本。主版本请参阅 GetVersion

OutputVar := zip.GetSubVersion()
OutputVar(输出变量)

用于存储 7-Zip 模块子版本的变量名称。

GetTime

获取当前文件的时间戳,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetTime(ArchiveHandle)
OutputVar(输出变量)

用于存储 MSDOS 格式时间戳的变量名称,如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetType

获取压缩包类型。

OutputVar := zip.GetType(Archive)
OutputVar(输出变量)

用于存储压缩包类型的变量名称,如果出错则为 -1。

Archive(压缩包)

压缩包的文件名或路径。

GetVersion

获取 7-Zip 的主版本。子版本请参阅 GetSubVersion

OutputVar := zip.GetVersion()
OutputVar(输出变量)

用于存储 7-Zip 模块主版本的变量名称。

GetWriteTime

获取当前文件的 DOS 格式修改时间,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetWriteTime(ArchiveHandle)
OutputVar(输出变量)

用于存储 MSDOS 格式的文件时间的变量名称,如果出错则为 -1。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

GetWriteTimeEx

获取当前文件的 DOS 格式修改时间,该文件由 FindFirstFindNext 找到。

OutputVar := zip.GetWriteTimeEx(ArchiveHandle, lpFILETIME)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

lpFILETIME(FILETIME 指针)

指向 FILETIME 结构的指针以接收时间。通过 getvar(time:=0) 将 64 位值保存在变量中。

Hash

为文件创建 Hash

OutputVar := zip.Hash(CRC, Files, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

CRC(CRC)

CRC 方法。支持的方法:CRC32、CRC64、SHA1、SHA256、BLAKE2sp。默认方法是 CRC32

Files(文件)

要计算哈希值的一个或多个文件、路径或文件模式。
当传递多个文件时,需要用换行符分隔,例如 “C:\File1.txt`nC:\File`nC:\MyDir”

Options(选项,可选)

请参阅 7-Zip Hash() 帮助中支持的开关。

IsSFXFile

检查压缩包是否为自解压压缩包。目前除非出现错误,否则仅返回 0。

OutputVar := zip.IsSFXFile(ArchiveHandle)
OutputVar(输出变量)

发生错误时存储 0 或 -1 的变量名称。

ArchiveHandle(压缩包句柄)

先前由 Open 返回的句柄。

KillOwnerWindowEx

停止监视来自 7-Zip 模块的消息。参见 SetOwnerWindowEx

OutputVar := zip.KillOwnerWindowEx(WindowHandle)
OutputVar(输出变量)

成功时存储 true / 1 或句柄不匹配时存储 false / 0 的变量名称。

WindowHandle(窗口句柄)

当前正在监视消息的窗口句柄。

KillOwnerWindowEx64

停止监视来自 7-Zip 模块的消息。参见 SetOwnerWindowEx64

OutputVar := zip.KillOwnerWindowEx64(WindowHandle)
OutputVar(输出变量)

成功时存储 true / 1 或句柄不匹配时存储 false / 0 的变量名称。

WindowHandle(窗口句柄)

当前正在监视消息的窗口句柄。

List

列出压缩包中的文件和其他信息。

OutputVar := zip.List(Archive, FilePattern)
OutputVar(输出变量)

用于存储数组的变量名称,每个元素将包含一个包含[日期、时间、文件属性、未压缩大小、压缩大小、文件路径]的数组。

FilePattern(文件模式,可选)

要过滤的文件模式。参见 通配符

Open

打开压缩包。

OutputVar := zip.Open(Archive, Mode)
OutputVar(输出变量)

用于存储 ArchiveHandle 的变量的名称。

Archive(压缩包)

压缩包的文件名或路径。

Mode(模式,可选)

支持以下标志:

  • M_ERROR_MESSAGE_ON (0x400000): 为受密码保护的压缩包请求密码;否则将使用由 SetDefaultPassword 设置的密码。
  • M_CHECK_ALL_PATH (0x100):启用递归子目录 FindFirst
  • M_CHECK_FILENAME_ONLY (0x200):禁用递归子目录。当 M_CHECK_ALL_PATH |使用 M_CHECK_FILENAME_ONLY 时,它将仅对通配符名称启用递归子目录。

PasswordDialog

显示密码窗口并返回输入的密码。

OutputVar := zip.PasswordDialog()
OutputVar(输出变量)

用于存储密码的变量的名称。

Rename

Rename 压缩包中的文件。

OutputVar := zip.Update(Archive, Files, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

Archive(压缩包)

要更新的压缩包文件名或路径。

Files(文件)

要在压缩包中重命名的一对或多对文件或路径(nameFrom nameTo)。
文件需要用换行符分隔,例如 “文件1.txt`n文件2`nMyDir\`nMyDir2\”

Options(选项,可选)

请参阅 7-Zip Rename() 帮助中支持的开关。

SetBackGroundMode

设置 7-Zip 的背景模式。当前该值已保存但未在内部使用。

OutputVar := zip.SetBackGroundMode(BackgroundMode)
OutputVar(输出变量)

用于存储后台模式的变量的名称。

BackgroundMode(后台模式)

1 表示后台模式,0 表示非后台模式。

SetCP

设置压缩包的代码页。

OutputVar := zip.SetCP(CodePage)
OutputVar(输出变量)

成功时存储 true / 1,代码页小于 1 时存储 false / 0 的变量名称。

CodePage(代码页)

Open 使用的代码页。

SetCursorInterval

设置光标旋转速度。

OutputVar := zip.SetCursorInterval(Interval)
OutputVar(输出变量)

用于存储 true / 1 的变量名称。

Interval(间隔)

光标的旋转速度(以毫秒为单位)。

SetCursorMode

设置光标在 7-Zip 操作中是否可见。

OutputVar := zip.SetCursorMode(CursorMode)
OutputVar(输出变量)

用于存储 true / 1 的变量名称。

CursorMode(光标模式)

True / 1 显示光标,False / 0 隐藏光标。

SetDefaultPassword

设置压缩包受密码保护且未指定密码时使用的默认密码。

OutputVar := zip.SetDefaultPassword(ArchiveHandle, Password)
OutputVar(输出变量)

变量名称,成功时存储 0,其他值表示错误。

ArchiveHandle(压缩包句柄,可选)

先前返回的句柄 Open
当没有给出句柄时,将设置全局密码。

Password(密码,可选)

用于进一步操作的密码。

SetOwnerWindow

当 7-Zip 处于压缩或解压缩操作时设置窗口消息。使用 ClearOwnerWindow 停止查看消息。
要监视消息,请使用 wm_arcextract:=RegisterWindowMessage("wm_arcextract") 返回的消息号调用 OnMessage。

OutputVar := zip.SetOwnerWindow(WindowHandle)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

WindowHandle(窗口句柄)

将接收来自 7-Zip 模块的消息的窗口句柄。

wParam will contain state of operation:
            0: BEGIN
            1: INPROCESS
            2: END
            3: OPEN
            4: COPY
            5: SKIP
lParam will contain a pointer to EXTRACTINGINFO Structure:
            typedef struct {
                    DWORD dwFileSize;                         // 要压缩/解压缩的全部数据总大小
                    DWORD dwWriteSize;                        // 已处理的压缩/解压缩数据大小
                    char szSourceFileName [FNAME_MAX32 + 1];  // 源文件名 (512 + 1)
                    char dummy1 [3];                          // 填充
                    char szDestFileName [FNAME_MAX32 + 1];    // 目标文件名 (512 + 1)
                    char dummy [3];                           // 填充
                } EXTRACTINGINFO;

SetOwnerWindowEx

当 7-Zip 处于压缩或解压缩操作时设置窗口消息。使用 KillOwnerWindowEx 停止查看消息。
要监视消息,请使用 wm_arcextract:=RegisterWindowMessage("wm_arcextract") 返回的消息号调用 OnMessage。

OutputVar := zip.SetOwnerWindowEx(WindowHandle, LPARCHIVERPROC)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

WindowHandle(窗口句柄)

将接收来自 7-Zip 模块的消息的窗口句柄。

LPARCHIVERPROC(压缩回调指针,可选)

使用 RegisterCallback 创建的回调函数具有以下参数:

  typedef BOOL CALLBACK ARCHIVERPROC(HWND _hwnd, UINT _uMsg,
                                     UINT _nState, LPVOID _lpEis);

  hwnd     窗口句柄。
  Msg      wm_arcextract。
  State    操作模式。
            0: BEGIN
            1: INPROCESS
            2: END
            3: OPEN
            4: COPY
            5: SKIP
  pEIS    LPEXTRACTINGINFOEX
          typedef struct {
              EXTRACTINGINFO exinfo;  // EXTRACTINGINFO 结构
              DWORD dwCompressedSize; // 压缩大小
              DWORD dwCRC;            // CRC 校验和
              UINT uOS Type;          // 操作系统
              WORD wRatio;            // 压缩比
              WORD wDate;             // MSDOS 格式的修改日期
              WORD wTime;             // MSDOS 格式的修改时间
              char szAttribute [8];   // 文件属性
              char szMode [8];        // 压缩方式
          } EXTRACTINGINFOEX;

ARCHIVERPROC 必须返回 true 以继续操作,返回 false 以取消。

如果 LPARCHIVERPROC 被省略或为 0,则将使用窗口消息模式。 (wParam = 状态,lParam = pEIS,hwnd,Msg)

SetOwnerWindowEx64

当 7-Zip 处于压缩或解压缩操作时设置窗口消息。使用 KillOwnerWindowEx64 停止查看消息。
要监视消息,请使用 wm_arcextract:=RegisterWindowMessage("wm_arcextract") 返回的消息号调用 OnMessage。

OutputVar := zip.SetOwnerWindowEx64(WindowHandle, LPARCHIVERPROC, StructSize)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

WindowHandle(窗口句柄)

将接收来自 7-Zip 模块的消息的窗口句柄。

LPARCHIVERPROC(压缩回调指针,可选)

使用 RegisterCallback 创建的回调函数具有以下参数:

  typedef BOOL CALLBACK ARCHIVERPROC(HWND _hwnd, UINT _uMsg,
                                     UINT _nState, LPVOID _lpEis);

  hwnd     窗口句柄。
  Msg      wm_arcextract。
  State    操作模式。
            0: BEGIN
            1: INPROCESS
            2: END
            3: OPEN
            4: COPY
            5: SKIP
  pEIS    LPEXTRACTINGINFO、LPEXTRACTINGINFOEX、LPEXTRACTINGINFOEX32 或 LPEXTRACTINGINFOEX64
          typedef struct {
              DWORD dwStructSize;                       // 结构大小
              EXTRACTINGINFO exinfo;                    // EXTRACTINGINFO 结构
              DWORD dwFileSize;                         // 要压缩/解压缩的全部数据总大小
              DWORD dwCompressedSize;                   // 压缩包的压缩后总大小
              DWORD dwWriteSize;                        // 已处理的压缩/解压缩数据大小
              DWORD dwAttributes;                       // 文件属性
              DWORD dwCRC;                              // CRC 校验和
              UINT uOS Type;                            // 操作系统
              WORD wRatio;                              // compression ratio
              FILETIME ftCreateTime;                    // 创建日期和时间
              FILETIME ftAccessTime;                    // 访问日期和时间
              FILETIME ftWriteTime;                     // 修改日期和时间
              char szMode [8];                          // 压缩方式
              char szSourceFileName [FNAME_MAX32 + 1];  // 源文件名 (512 + 1)
              char dummy1 [3];                          // 填充
              char szDestFileName [FNAME_MAX32 + 1];    // 目标文件名 (512 + 1)
              char dummy2 [3];                          // 填充
          } EXTRACTINGINFOEX32;
          
          typedef struct {
              DWORD dwStructSize;                       // 结构大小
              EXTRACTINGINFO exinfo;                    // EXTRACTINGINFO 结构
              ULHA_INT64 llFileSize;                    // 要压缩/解压缩的全部数据总大小
              ULHA_INT64 llCompressedSize;              // 压缩包的压缩后总大小
              ULHA_INT64 llWriteSize;                   // 已处理的压缩/解压缩数据大小
              DWORD dwAttributes;                       // 文件属性
              DWORD dwCRC;                              // CRC 校验和
              UINT uOS Type;                            // 操作系统
              WORT wRatio;                              // 压缩比
              FILETIME ftCreateTime;                    // 创建日期和时间
              FILETIME ftAccessTime;                    // 访问日期和时间
              FILETIME ftWriteTime;                     // 修改日期和时间
              char szMode [8];                          // 压缩方式
              char szSourceFileName [FNAME_MAX32 + 1];  // 源文件名 (512 + 1)
              char dummy1 [3];                          // 填充
              char szDestFileName [FNAME_MAX32 + 1];    // 目标文件名 (512 + 1)
              char dummy2 [3];                          // 填充
          } EXTRACTINGINFOEX64;

ARCHIVERPROC 必须返回 true 以继续操作,返回 false 以取消。

如果 LPARCHIVERPROC 被省略或为 0,则将使用窗口消息模式。 (wParam = 状态,lParam = pEIS,hwnd,Msg)

StructSize(结构大小)

要使用的结构的大小。根据大小,它将是 EXTRACTINGINFO、EXTRACTINGINFOEX、EXTRACTINGINFOEX32 或 EXTRACTINGINFOEX64

SetPriority

设置线程优先级。

OutputVar := zip.SetPriority(Priority)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

Priority(优先级)

使用与 SetThreadPriority 相同的值。

SetUnicodeMode

设置 Unicode 模式。

OutputVar := zip.SetUnicodeMode(UseUnicode)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

UseUnicode(使用 Unicode)

True / 1 使用 UTF-8,False / 0 使用 OEM 代码。

SfxConfigDialog

显示自解压对话框并返回输入的值。

OutputVar := zip.SfxConfigDialog()
OutputVar(输出变量)

用于存储输入值的变量名称。

SfxFileStoring

提取用于自解压压缩包的可执行文件。

OutputVar := zip.SfxFileStoring(FilePath)
OutputVar(输出变量)

成功时存储 true / 1 或出错时存储 false / 0 的变量名称。

FilePath(文件路径)

SFX 模块提取到的路径。

Update

Update 压缩包中的文件。

OutputVar := zip.Update(Archive, Files, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

Archive(压缩包)

要更新的压缩包文件名或路径。

Files(文件)

要在压缩包中更新的一个或多个文件、路径或文件模式。
传递多个文件时,需要用换行符分隔,例如 “C:\File1.txt`nC:\File`nC:\MyDir”

Options(选项,可选)

请参阅 7-Zip Update() 帮助中支持的开关。

Test

Test 压缩包或压缩包中的文件。

OutputVar := zip.Test(Archive, Files, Options)
OutputVar(输出变量)

用于存储 7-Zip 报告的结果的变量名称。

Archive(压缩包)

要测试的压缩包文件名或路径。

Files(文件,可选)

将测试的一个或多个文件、路径或文件模式。
当传递多个文件时,需要用换行符分隔,例如 “C:\File1.txt`nC:\File`nC:\MyDir”

Options(选项,可选)

请参阅 7-Zip Test() 帮助中支持的开关。

常见问题(FAQ)

我可以在商业组织中使用 7-Zip 吗?

是的,7-Zip 是免费软件。您可以在任何计算机上使用它。您无需注册或支付 7-Zip 费用。

为什么新版本 7-Zip 创建的 7z 压缩包比旧版本 7-Zip 创建的压缩包大?

新版本的 7-Zip(从版本 15.06 开始)默认使用另一种文件排序顺序来存储固实 7z 压缩包。

旧版本的 7-Zip(版本 15.06 之前)使用“按类型”(“按扩展名”)对文件进行排序。

新版本的 7-Zip 支持两种排序顺序:

如果字典大小小于文件总大小,则不同排序方法的压缩率可能会有很大差异。如果不同的文件夹中有类似的文件,“按类型”排序在某些情况下可以提供更好的压缩比。

请注意,“按类型”排序有一些缺点。例如,NTFS 卷使用“按名称”排序,因此如果压缩包使用另一种排序方式,对文件顺序不寻常的某些操作在 HDD 设备上可能会变慢(HDD 的“查找”操作速度较低)。

您可以通过以下方法提高压缩率:

如果不寻常的文件顺序对您不是问题,并且小字典带来的更好压缩比更重要,请使用 'qs' 模式。

为什么 7-Zip 无法打开某些 ZIP 压缩包?

在 99% 的情况下,这意味着压缩包包含不正确的标头。其他 ZIP 程序可以打开一些标头不正确的压缩包,因为这些程序会直接忽略错误。

如果您有此类压缩包,请不要为此联系 7-Zip 开发人员。请尝试找到创建该压缩包的程序,并告知该程序的开发人员,他们的软件与 ZIP 不兼容。

还有一些 ZIP 压缩包使用 7-Zip 不支持的方法进行编码,例如 WAVPack (WinZip)。

为什么命令行版本不将没有扩展名的文件添加到压缩包中?

您可能正在使用 *.* 通配符。 7-Zip 不使用操作系统的通配符掩码解析器,因此将 *.* 视为具有扩展名的任何文件。要处理所有文件,您必须使用 * 通配符或完全省略通配符。

为什么 -r 开关不能按预期工作?

在大多数情况下,您不需要 -r 开关。即使没有 -r 开关,7-Zip 也可以压缩子文件夹。

示例 1:

  a c:\a.7z "C:\Program Files"

完全压缩“C:\Program Files”,包括所有子文件夹。

示例 2:

  a -r c:\a.7z "C:\Program Files"

在 C:\ 的所有子文件夹中搜索并压缩“Program Files”(例如,在“C:\WINDOWS”中)。

如果您只需要压缩具有某些扩展名的文件,可以使用 -r 开关:
  a -r c:\a.zip c:\dir\*.txt 

压缩文件夹 c:\dir\ 及其所有子文件夹中的所有 *.txt 文件。

如何在压缩包中存储文件的完整路径?

7-Zip 仅存储文件的相对路径(没有驱动器号前缀)。您可以将当前文件夹更改为所有要压缩的文件共用的文件夹,然后可以使用相对路径:

  cd /D C:\dir1\
  a c:\a.7z file1.txt dir2\file2.txt

为什么 7-Zip 不能在 32 位 Windows 中使用大字典?

32 位 Windows 仅为每个应用程序分配 2 GB 的虚拟空间。此外,2 GB 的块可能会被分成碎片(例如,通过某些 DLL 文件),因此 7-Zip 无法分配一大块连续的虚拟空间。 64 位 Windows 中没有此类限制。因此,如果您有所需的物理 RAM,您可以在 Windows x64 中使用任何字典。

如何恢复损坏的 7z 压缩包?

压缩包损坏有一些可能的情况:

可以恢复一些数据。阅读有关恢复过程的信息:

恢复损坏的 7z 压缩包




版权所有 (C) 2021 伊戈尔·巴甫洛夫。该网站托管于 Digital Ocean