找回密码
 加入
搜索
查看: 3028|回复: 10

[AU3基础] 7Zip.au3不再需要dll文件,方便调用 .有什么办法实现??[已解决]

  [复制链接]
发表于 2014-8-21 12:11:24 | 显示全部楼层 |阅读模式
本帖最后由 dunphy 于 2014-8-24 18:11 编辑

如题,看了AFAN达修改的水纹DLL。。
;根据Duvet调用dll的例子修改,将dll文件写进了函数“waterctrl.dll.au3”,不再需要dll文件,方便调用
; Afan -- http://www.autoitx.com -- 2010-08-18

心里想能不能将7-zip32.dll也写入函数7Zip.au3内。
; #VARIABLES# ===================================================================================================================

Local $7ZDLL_PATH = @WindowsDir & "\Temp\7-zip32.dll"
FileInstall ("7-zip32.dll", $7ZDLL_PATH, 1)


Global $hDLL_7ZIP = DllOpen($7ZDLL_PATH)

If $hDLL_7ZIP = -1 Then Exit 1

Global Const $FNAME_MAX32 = 512
Global $hArchiveProc

;File attributes constants
Global Const $FA_RDONLY    = 0x01 ;Reading private file
Global Const $FA_HIDDEN    = 0x02 ;Invisibility attribute file
Global Const $FA_SYSTEM    = 0x04 ;System file
Global Const $FA_LABEL     = 0x08 ;Volume label
Global Const $FA_DIREC     = 0x10 ;Directory
Global Const $FA_ARCH      = 0x20 ;Retention bit
Global Const $FA_ENCRYPTED = 0x40 ;The password the file which is protected
; ===============================================================================================================================

; #STRUCTURES# ==================================================================================================================
Global $tagINDIVIDUALINFO = "int dwOriginalSize;int dwCompressedSize;int dwCRC;uint uFlag;uint uOSType;short wRatio;" & _
                                                        "short wDate;short wTime;char szFileName[" & $FNAME_MAX32 + 1 & "];char dummy1[3];" & _
                                                        "char szAttribute[8];char szMode[8]"

Global Const $tagEXTRACTINGINFO = "int dwFileSize;int dwWriteSize;char szSourceFileName[" & $FNAME_MAX32 + 1 & "];" & _
                                                                  "char dummy1[3];char szDestFileName[" & $FNAME_MAX32 + 1 & "];char dummy[3]"

Global Const $tagEXTRACTINGINFOEX = $tagEXTRACTINGINFO & ";dword dwCompressedSize;dword dwCRC;uint uOSType;short wRatio;" & _
                                                                        "short wDate;short wTime;char szAttribute[8];char szMode[8]"
; ===============================================================================================================================

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipAdd
; Description ...: Adds files to archive
; Syntax.........: _7ZipAdd($hWnd, $sArcName, $sFileName[, $sHide = 0[, $sCompress = 5[, $sRecurse = 1[, $sIncludeFile = 0[, _
;                                   $sExcludeFile = 0[, $sPassword = 0[, $sSFX = 0[, $sVolume = 0[, $sWorkDir = 0]]]]]]]]])
; Parameters ....: $hWnd         - Handle to parent or owner window
;                                   $sArcName     - Archive file name
;                                   $sFileName    - File names to archive up
;                                   $sHide        - Use this switch if you want the CallBack function to be called
;                                   $sCompress    - Compress level 0-9
;                                   $sRecurse     - Recursion method: 0 - Disable recursion
;                                                                                                         1 - Enable recursion
;                                                                                                         2 - Enable recursion only for wildcard names
;                                   $sIncludeFile - Include filenames, specifies filenames and wildcards or list file that specify processed files
;                                   $sExcludeFile - Exclude filenames, specifies what filenames or (and) wildcards must be excluded from operation
;                                   $sPassword    - Specifies password
;                                   $sSFX         - Creates self extracting archive
;                                   $sVolume      - Specifies volumes sizes
;                                   $sWorkDir     - Sets working directory for temporary base archive
; Return values .: Success       - Returns the string with results
;                  Failure       - Returns 0 and and sets the @error flag to 1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipAdd($hWnd, $sArcName, $sFileName, $sHide = 0, $sCompress = 5, $sRecurse = 1, $sIncludeFile = 0, $sExcludeFile = 0, _
                          $sPassword = 0, $sSFX = 0, $sVolume = 0, $sWorkDir = 0)

        $sArcName = '"' & $sArcName & '"'
        $sFileName = '"' & $sFileName & '"'

        Local $iSwitch = ""

        If $sHide Then $iSwitch &= " -hide"

        $iSwitch &= " -mx" & $sCompress
        $iSwitch &= _RecursionSet($sRecurse)

        If $sIncludeFile Then $iSwitch &= _IncludeFileSet($sIncludeFile)
        If $sExcludeFile Then $iSwitch &= _ExcludeFileSet($sExcludeFile)

        If $sPassword Then $iSwitch &= " -p" & $sPassword

        If FileExists($sSFX) Then $iSwitch &= " -sfx" & $sSFX

        If $sVolume Then $iSwitch &= " -v" & $sVolume

        If $sWorkDir Then $iSwitch &= " -w" & $sWorkDir

        Local $tOutBuffer = DllStructCreate("char[32768]")

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZip", _
                                                                                         "hwnd", $hWnd, _
                                                                                         "str", "a " & $sArcName & " " & $sFileName & " " & $iSwitch, _
                                                                                         "ptr", DllStructGetPtr($tOutBuffer), _
                                                                                         "int", DllStructGetSize($tOutBuffer))

        If Not $aRet[0] Then Return SetError(0, 0, DllStructGetData($tOutBuffer, 1))
        Return SetError(1, 0, 0)
EndFunc   ;==>_7ZipAdd

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipDelete
; Description ...: Deletes files from archive
; Syntax.........: _7ZipDelete($hWnd, $sArcName, $sFileName[, $sHide = 0[, $sCompress = 5[, $sRecurse = 1[, $sIncludeFile = 0[, _
;                                   $sExcludeFile = 0[, $sPassword = 0[, $sWorkDir = 0]]]]]]])
; Parameters ....: $hWnd         - Handle to parent or owner window
;                                   $sArcName     - Archive file name
;                                   $sFileName    - File names to deleting
;                                   $sHide        - Use this switch if you want the CallBack function to be called
;                                   $sCompress    - Compress level 0-9
;                                   $sRecurse     - Recursion method: 0 - Disable recursion
;                                                                                                         1 - Enable recursion
;                                                                                                         2 - Enable recursion only for wildcard names
;                                   $sIncludeFile - Include filenames, specifies filenames and wildcards or list file that specify processed files
;                                   $sExcludeFile - Exclude filenames, specifies what filenames or (and) wildcards must be excluded from operation
;                                   $sPassword    - Specifies password
;                                   $sWorkDir     - Sets working directory for temporary base archive
; Return values .: Success       - Returns the string with results
;                  Failure       - Returns 0 and and sets the @error flag to 1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipDelete($hWnd, $sArcName, $sFileName, $sHide = 0, $sCompress = 5, $sRecurse = 1, $sIncludeFile = 0, $sExcludeFile = 0, _
                                 $sPassword = 0, $sWorkDir = 0)

        $sArcName = '"' & $sArcName & '"'
        $sFileName = '"' & $sFileName & '"'

        Local $iSwitch = ""

        If $sHide Then $iSwitch &= " -hide"

        $iSwitch &= " -mx" & $sCompress
        $iSwitch &= _RecursionSet($sRecurse)

        If $sIncludeFile Then $iSwitch &= _IncludeFileSet($sIncludeFile)

        If $sExcludeFile Then $iSwitch &= _ExcludeFileSet($sExcludeFile)

        If $sPassword Then $iSwitch &= " -p" & $sPassword
        If $sWorkDir Then $iSwitch &= " -w" & $sWorkDir

        Local $tOutBuffer = DllStructCreate("char[32768]")

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZip", _
                                                                                         "hwnd", $hWnd, _
                                                                                         "str", "d " & $sArcName & " " & $sFileName & " " & $iSwitch, _
                                                                                         "ptr", DllStructGetPtr($tOutBuffer), _
                                                                                         "int", DllStructGetSize($tOutBuffer))

        If Not $aRet[0] Then Return SetError(0, 0, DllStructGetData($tOutBuffer, 1))
        Return SetError(1, 0, 0)
EndFunc   ;==>_7ZipDelete

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZIPExtract
; Description ...: Extracts files from archive to the current directory or to the output directory
; Syntax.........: _7ZIPExtract($hWnd, $sArcName[, $sOutput = 0[, $sHide = 0[, $sOverwrite = 0[, $sRecurse = 1[, _
;                                                                   $sIncludeArc[, $sExcludeArc[, $sIncludeFile = 0[, $sExcludeFile = 0[, $sPassword = 0[, _
;                                                                $sYes = 0]]]]]]]]]])
; Parameters ....: $hWnd         - Handle to parent or owner window
;                                   $sArcName     - Archive file name
;                                   $sOutput      - Output directory
;                                   $sHide        - Use this switch if you want the CallBack function to be called
;                                   $sOverwrite   - Overwrite mode:   0 - Overwrite All existing files without prompt, _
;                                                                                                     1 - Skip extracting of existing files, _
;                                                                                                     2 - Auto rename extracting file, _
;                                                                                                     3 - auto rename existing file
;                                   $sRecurse     - Recursion method: 0 - Disable recursion
;                                                                                                         1 - Enable recursion
;                                                                                                         2 - Enable recursion only for wildcard names
;                                   $sIncludeArc  - Include archive filenames
;                                   $sExcludeArc  - Exclude archive filenames
;                                   $sIncludeFile - Include filenames, specifies filenames and wildcards or list file that specify processed files
;                                   $sExcludeFile - Exclude filenames, specifies what filenames or (and) wildcards must be excluded from operation
;                                   $sPassword    - Specifies password
;                                   $Yes          - assume Yes on all queries
; Return values .: Success       - Returns the string with results
;                  Failure       - Returns 0 and and sets the @error flag to 1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZIPExtract($hWnd, $sArcName, $sOutput = 0, $sHide = 0, $sOverwrite = 0, $sRecurse = 1, $sIncludeArc = 0, $sExcludeArc = 0, _
                                  $sIncludeFile = 0, $sExcludeFile = 0, $sPassword = 0, $sYes = 0)

        $sArcName = '"' & $sArcName & '"'

        Local $iSwitch = ""

        If $sOutput Then $iSwitch = ' -o"' & $sOutput & '"'
        If $sHide Then $iSwitch &= " -hide"

        $iSwitch &= _OverwriteSet($sOverwrite)
        $iSwitch &= _RecursionSet($sRecurse)

        If $sIncludeArc Then $iSwitch &= _IncludeArcSet($sIncludeArc)
        If $sExcludeArc Then $iSwitch &= _ExcludeArcSet($sExcludeArc)

        If $sIncludeFile Then $iSwitch &= _IncludeFileSet($sIncludeFile)
        If $sExcludeFile Then $iSwitch &= _ExcludeFileSet($sExcludeFile)

        If $sPassword Then $iSwitch &= " -p" & $sPassword
        If $sYes Then $iSwitch &= " -y"

        Local $tOutBuffer = DllStructCreate("char[32768]")

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZip", _
                                                                                         "hwnd", $hWnd, _
                                                                                         "str", "e " & $sArcName & " " & $iSwitch, _
                                                                                         "ptr", DllStructGetPtr($tOutBuffer), _
                                                                                         "int", DllStructGetSize($tOutBuffer))

        If Not $aRet[0] Then Return SetError(0, 0, DllStructGetData($tOutBuffer, 1))
        Return SetError(1, 0, 0)
EndFunc   ;==>_7ZIPExtract

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZIPExtractEx
; Description ...: Extracts files from archive with full paths to the current directory or to the output directory
; Syntax.........: _7ZIPExtract($hWnd, $sArcName[, $sOutput = 0[, $sHide = 0[, $sOverwrite = 0[, $sRecurse = 1[, _
;                                                                   $sIncludeArc[, $sExcludeArc[, $sIncludeFile = 0[, $sExcludeFile = 0[, $sPassword = 0[, _
;                                                                $sYes = 0]]]]]]]]]])
; Parameters ....: $hWnd         - Handle to parent or owner window
;                                   $sArcName     - Archive file name
;                                   $sOutput      - Output directory
;                                   $sHide        - Use this switch if you want the CallBack function to be called
;                                   $sOverwrite   - Overwrite mode:   0 - Overwrite All existing files without prompt, _
;                                                                                                     1 - Skip extracting of existing files, _
;                                                                                                     2 - Auto rename extracting file, _
;                                                                                                     3 - auto rename existing file
;                                   $sRecurse     - Recursion method: 0 - Disable recursion
;                                                                                                         1 - Enable recursion
;                                                                                                         2 - Enable recursion only for wildcard names
;                                   $sIncludeArc  - Include archive filenames
;                                   $sExcludeArc  - Exclude archive filenames
;                                   $sIncludeFile - Include filenames, specifies filenames and wildcards or list file that specify processed files
;                                   $sExcludeFile - Exclude filenames, specifies what filenames or (and) wildcards must be excluded from operation
;                                   $sPassword    - Specifies password
;                                   $Yes          - assume Yes on all queries
; Return values .: Success       - Returns the string with results
;                  Failure       - Returns 0 and and sets the @error flag to 1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipExtractEx($hWnd, $sArcName, $sOutput = 0, $sHide = 0, $sOverwrite = 0, $sRecurse = 1, $sIncludeArc = 0, _
                                        $sExcludeArc = 0, $sIncludeFile = 0, $sExcludeFile = 0, $sPassword = 0, $sYes = 0)

        $sArcName = '"' & $sArcName & '"'

        Local $iSwitch = ""

        If $sOutput Then $iSwitch = ' -o"' & $sOutput & '"'
        If $sHide Then $iSwitch &= " -hide"

        $iSwitch &= _OverwriteSet($sOverwrite)
        $iSwitch &= _RecursionSet($sRecurse)

        If $sIncludeArc Then $iSwitch &= _IncludeArcSet($sIncludeArc)
        If $sExcludeArc Then $iSwitch &= _ExcludeArcSet($sExcludeArc)

        If $sIncludeFile Then $iSwitch &= _IncludeFileSet($sIncludeFile)
        If $sExcludeFile Then $iSwitch &= _ExcludeFileSet($sExcludeFile)

        If $sPassword Then $iSwitch &= " -p" & $sPassword
        If $sYes Then $iSwitch &= " -y"

        Local $tOutBuffer = DllStructCreate("char[32768]")

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZip", _
                                                                                         "hwnd", $hWnd, _
                                                                                         "str", "x " & $sArcName & " " & $iSwitch, _
                                                                                         "ptr", DllStructGetPtr($tOutBuffer), _
                                                                                         "int", DllStructGetSize($tOutBuffer))

        If Not $aRet[0] Then Return SetError(0, 0, DllStructGetData($tOutBuffer, 1))
        Return SetError(1, 0, 0)
EndFunc   ;==>_7ZIPExtractEx

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZIPUpdate
; Description ...: Update older files in the archive and add files that are new to the archive
; Syntax.........: _7ZIPUpdate($hWnd, $sArcName, $sFileName[, $sHide = 0[, $sCompress = 5[, $sRecurse = 1[, _
;                                                              $sIncludeFile = 0[, $sExcludeFile = 0[, $sPassword = 0[, $sSFX = 0[, $sWorkDir = 0]]]]]]]])
; Parameters ....: $hWnd         - Handle to parent or owner window
;                                   $sArcName     - Archive file name
;                                   $sFileName    - File names to archive up
;                                   $sHide        - Use this switch if you want the CallBack function to be called
;                                   $sCompress    - Compress level 0-9
;                                   $sRecurse     - Recurse method: 0 - Disable recursion
;                                                                                                   1 - Enable recursion
;                                                                                                   2 - Enable recursion only for wildcard names
;                                   $sIncludeFile - Include filenames, specifies filenames and wildcards or list file that specify processed files
;                                   $sExcludeFile - Exclude filenames, specifies what filenames or (and) wildcards must be excluded from operation
;                                   $sPassword    - Specifies password
;                                   $sSFX         - Creates self extracting archive
;                                   $sWorkDir     - Sets working directory for temporary base archive
; Return values .: Success       - Returns the string with results
;                  Failure       - Returns 0 and and sets the @error flag to 1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipUpdate($hWnd, $sArcName, $sFileName, $sHide = 0, $sCompress = 5, $sRecurse = 1, $sIncludeFile = 0, $sExcludeFile = 0, _
                                 $sPassword = 0, $sSFX = 0, $sWorkDir = 0)

        $sArcName = '"' & $sArcName & '"'
        $sFileName = '"' & $sFileName & '"'

        Local $iSwitch = ""

        If $sHide Then $iSwitch &= " -hide"

        $iSwitch = " -mx" & $sCompress
        $iSwitch &= _RecursionSet($sRecurse)

        If $sIncludeFile Then $iSwitch &= _IncludeFileSet($sIncludeFile)
        If $sExcludeFile Then $iSwitch &= _ExcludeFileSet($sExcludeFile)

        If $sPassword Then $iSwitch &= " -p" & $sPassword
        If FileExists($sSFX) Then $iSwitch &= " -sfx" & $sSFX
        If $sWorkDir Then $iSwitch &= " -w" & $sWorkDir

        Local $tOutBuffer = DllStructCreate("char[32768]")

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZip", _
                                                                                         "hwnd", $hWnd, _
                                                                                         "str", "u " & $sArcName & " " & $sFileName & " " & $iSwitch, _
                                                                                         "ptr", DllStructGetPtr($tOutBuffer), _
                                                                                         "int", DllStructGetSize($tOutBuffer))

        If Not $aRet[0] Then Return SetError(0, 0, DllStructGetData($tOutBuffer, 1))
        Return SetError(1, 0, 0)
EndFunc   ;==>_7ZIPUpdate

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipSetOwnerWindowEx
; Description ...: Appoints the call-back function in order to receive the information of the compressing/unpacking
; Syntax.........: _7ZipSetOwnerWindowEx($hWnd, $sProcFunc)
; Parameters ....: $hWnd      - Handle to parent or owner window
;                                   $sProcFunc - The call-back function name
; Return values .: Success  - Returns 1
;                  Failure  - Returns 0
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipSetOwnerWindowEx($hWnd, $sProcFunc)
        If $hArchiveProc Then DllCallbackFree($hArchiveProc)
        $hArchiveProc = DllCallbackRegister($sProcFunc, "int", "hwnd;uint;uint;ptr")
        If $hArchiveProc = 0 Then Return SetError(1, 0, 0)

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipSetOwnerWindowEx", _
                                                                                         "hwnd", $hWnd, _
                                                                                         "ptr", DllCallbackGetPtr($hArchiveProc))
        Return $aRet[0]
EndFunc   ;==>_7ZipSetOwnerWindowEx

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipKillOwnerWindowEx
; Description ...: Cancels a window owner
; Syntax.........: _7ZipKillOwnerWindowEx($hWnd)
; Parameters ....: $hWnd      - Handle to parent or owner window
; Return values .: Success  - Returns 1
;                  Failure  - Returns 0
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipKillOwnerWindowEx($hWnd)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipKillOwnerWindowEx", _
                                                                                         "hwnd", $hWnd)
        Return $aRet[0]
EndFunc   ;==>_7ZipKillOwnerWindowEx

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipOpenArchive
; Description ...: Opens a arcive file
; Syntax.........: _7ZipOpenArchive($sArcName)
; Parameters ....: hWnd      - Handle to parent or owner window
;                                   $sArcName - Archive file name
; Return values .: Success   - Returns a archive handle
;                  Failure   - Returns 0
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipOpenArchive($hWnd, $sArcName)
        Local $hArc = DllCall($hDLL_7ZIP, "hwnd", "SevenZipOpenArchive", "hwnd", $hWnd, "str", $sArcName, "int", 0)
        Return $hArc[0]
EndFunc   ;==>_7ZipOpenArchive

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipCloseArchive
; Description ...: Closes a previously opened archive handle
; Syntax.........: _7ZipCloseArchive($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success   - Returns 0
;                  Failure   - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipCloseArchive($hArc)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipCloseArchive", "hwnd", $hArc)
        Return $aRet[0]
EndFunc   ;==>_7ZipCloseArchive

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipFindFirst
; Description ...: Returns a $INDIVIDUALINFO structure with information of the first finded file
; Syntax.........: _7ZipFindFirst($hArc, $sSearch)
; Parameters ....: $hArc    - Archive handle
;                                   $sSearch - File search string. (wildcards are supported)
; Return values .: Success  - Returns a $INDIVIDUALINFO structure
;                  Failure  - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipFindFirst($hArc, $sSearch)
        Local $INDIVIDUALINFO = DllStructCreate($tagINDIVIDUALINFO)

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipFindFirst", _
                                                                                         "hwnd", $hArc, _
                                                                                         "str", $sSearch, _
                                                                                         "ptr", DllStructGetPtr($INDIVIDUALINFO))
        If $aRet[0] = -1 Then Return $aRet[0]
        Return $INDIVIDUALINFO
EndFunc   ;==>_7ZipFindFirst

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipFindNext
; Description ...: Returns a $tINDIVIDUALINFO structure according to a previous call to _7ZipFindFirst
; Syntax.........: _7ZipFindNext($hArc, $tINDIVIDUALINFO)
; Parameters ....: $hArc            - Archive handle
;                                   $tINDIVIDUALINFO - The $tINDIVIDUALINFO structure
; Return values .: Success  - Returns a $INDIVIDUALINFO structure
;                  Failure  - Returns 0
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipFindNext($hArc, $tINDIVIDUALINFO)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipFindNext", _
                                                                                         "hwnd", $hArc, _
                                                                                         "ptr", DllStructGetPtr($tINDIVIDUALINFO))
        If $aRet[0] = 0 Then Return $tINDIVIDUALINFO
EndFunc   ;==>SevenZipFindNext

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetFileName
; Description ...: Returns a file name
; Syntax.........: _7ZipGetFileName($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns a string with a file name
;                  Failure - Returns 0
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetFileName($hArc)
        Local $tNameBuffer = DllStructCreate("char[" & $FNAME_MAX32 + 1 & "]")

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipGetFileName", _
                                                                                         "hwnd", $hArc, _
                                                                                         "ptr", DllStructGetPtr($tNameBuffer), _
                                                                                         "int", DllStructGetSize($tNameBuffer))
        If $aRet[0] = 0 Then Return DllStructGetData($tNameBuffer, 1)
EndFunc   ;==>_7ZipGetFileName

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetArcOriginalSize
; Description ...: Returns a original size of files in an archive
; Syntax.........: _7ZipGetArcOriginalSize($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns a total size
;                  Failure - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetArcOriginalSize($hArc)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipGetArcOriginalSize", _
                                                                                         "hwnd", $hArc)
        Return $aRet[0]
EndFunc   ;==>_7ZipGetArcOriginalSize

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetArcCompressedSize
; Description ...: Returns a compressed size of files in an archive
; Syntax.........: _7ZipGetArcCompressedSize($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns a total size
;                  Failure - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetArcCompressedSize($hArc)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipGetArcCompressedSize", _
                                                                                         "hwnd", $hArc)
        Return $aRet[0]
EndFunc   ;==>_7ZipGetArcCompressedSize

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetArcRatio
; Description ...: Returns a compressing ratio
; Syntax.........: _7ZipGetArcRatio($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns a compressing ratio
;                  Failure - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetArcRatio($hArc)
        Local $aRet = DllCall($hDLL_7ZIP, "short", "SevenZipGetArcRatio", _
                                                                                         "hwnd", $hArc)
        Return $aRet[0]
EndFunc   ;==>_7ZipGetArcRatio

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetDate
; Description ...: Returns a date of files in an archive
; Syntax.........: _7ZipGetDate($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns a date in an MSDOS format
;                  Failure - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetDate($hArc)
        Local $aRet = DllCall($hDLL_7ZIP, "short", "SevenZipGetDate", _
                                                                                                "hwnd", $hArc)
        If $aRet[0] = -1 Then Return $aRet[0]
        Return "0x" & Hex($aRet[0], 4)
EndFunc   ;==>_7ZipGetDate

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetTime
; Description ...: Returns a time of files in an archive
; Syntax.........: _7ZipGetTime($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns a time in an MSDOS format
;                  Failure - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetTime($hArc)
        Local $aRet = DllCall($hDLL_7ZIP, "short", "SevenZipGetTime", _
                                                                                                "hwnd", $hArc)
        If $aRet[0] = -1 Then Return $aRet[0]
        Return "0x" & Hex($aRet[0], 4)
EndFunc   ;==>_7ZipGetTime

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetCRC
; Description ...: Returns a CRC of files in an archive
; Syntax.........: _7ZipGetCRC($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns a CRC
;                  Failure - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetCRC($hArc)
        Local $aRet = DllCall($hDLL_7ZIP, "dword", "SevenZipGetCRC", _
                                                                                                "hwnd", $hArc)
        Return $aRet[0]
EndFunc   ;==>_7ZipGetCRC

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetAttribute
; Description ...: Returns a attribute of files in an archive
; Syntax.........: _7ZipGetAttribute($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns attribute of the file
;                  Failure - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetAttribute($hArc)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipGetAttribute", _
                                                                                         "hwnd", $hArc)
        If $aRet[0] = -1 Then Return $aRet[0]
        Return "0x" & Hex($aRet[0], 2)
EndFunc   ;==>_7ZipGetAttribute

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetMethod
; Description ...: Returns a string with the method of compressing
; Syntax.........: _7ZipGetMethod($hArc)
; Parameters ....: $hArc - Archive handle
; Return values .: Success - Returns the method of compressing
;                  Failure - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetMethod($hArc)
        Local $sBUFFER = DllStructCreate("char[8]")

        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipGetMethod", _
                                                                                         "hwnd", $hArc, _
                                                                                         "ptr", DllStructGetPtr($sBUFFER), _
                                                                                         "int", DllStructGetSize($sBUFFER))
        If $aRet[0] <> 0 Then Return False
        Return DllStructGetData($sBUFFER, 1)
EndFunc   ;==>_7ZipGetMethod

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZIPCheckArchive
; Description ...: Checks archive files
; Syntax.........: _7ZIPCheckArchive($sArcName)
; Parameters ....: $sArcName - Archive file name
; Return values .: Success   - 1
;                  Failure   - 0
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipCheckArchive($sArcName)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipCheckArchive", _
                                                                                         "str", $sArcName, _
                                                                                         "int", 0)
        Return $aRet[0]
EndFunc   ;==>_7ZIPCheckArchive

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetArchiveType
; Description ...: Returns the archive type
; Syntax.........: _7ZipGetArchiveType($sArcName)
; Parameters ....: $sArcName - Archive file name
; Return values .: Success: 1 - ZIPtype
;                                                        2 - 7Ztype
;                                                        0 - Unknown type
;                  Failure    - -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetArchiveType($sArcName)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipGetArchiveType", _
                                                                                         "str", $sArcName)
        Return $aRet[0]
EndFunc   ;==>_7ZIPGetArchiveType

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetFileCount
; Description ...: Returns the archive files count
; Syntax.........: _7ZipGetFileCount($sArcName)
; Parameters ....: $sArcName - Archive file name
; Return values .: Success   - Returns the number of files
;                  Failure   - Returns -1
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetFileCount($sArcName)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipGetFileCount", _
                                                                                         "str", $sArcName)
        Return $aRet[0]
EndFunc

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipConfigDialog
; Description ...: Shows a about dialog of the 7-zip32.dll
; Syntax.........: SevenZipConfigDialog($hWnd)
; Parameters ....: $hWnd   - Handle to parent or owner window
; Return values .: Success - Returns 1
;                  Failure - Returns 0
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipConfigDialog($hWnd)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipConfigDialog", _
                                                                                         "hwnd", $hWnd, _
                                                                                         "ptr", 0, _
                                                                                         "int", 0)
        Return $aRet[0]
EndFunc   ;==>SevenZipConfigDialog

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipQueryFunctionList
; Description ...: Checks whether or not API function which is appointed with 7-zip32.dll
; Syntax.........: _7ZipQueryFunctionList($iFunction)
; Parameters ....: $iFunction - The unique numerical value of the function
; Return values .: Success - Returns 1
;                  Failure - Returns 0
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipQueryFunctionList($iFunction = 0)
        Local $aRet = DllCall($hDLL_7ZIP, "int", "SevenZipQueryFunctionList", _
                                                                                         "int", $iFunction)
        Return $aRet[0]
EndFunc   ;==>_7ZipQueryFunctionList

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetVersion
; Description ...: Returns a version of the 7-zip32.dll
; Syntax.........: _7ZipGetVersion()
; Parameters ....: None
; Return values .: The version number
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetVersion()
        Local $aRet = DllCall($hDLL_7ZIP, "short", "SevenZipGetVersion")
        Return StringLeft($aRet[0], 1) & "." & StringTrimLeft($aRet[0], 1)
EndFunc   ;==>_7ZipGetVersion

; #FUNCTION# ====================================================================================================================
; Name...........: _7ZipGetSubVersion
; Description ...: Returns a sub-version of the 7-zip32.dll
; Syntax.........: _7ZipGetSubVersion()
; Parameters ....: None
; Return values .: The sub-version number
; Author ........: R. Gilman (rasim)
; ===============================================================================================================================
Func _7ZipGetSubVersion()
        Local $aRet = DllCall($hDLL_7ZIP, "short", "SevenZipGetSubVersion")
        Return $aRet[0]
EndFunc   ;==>_7ZipGetSubVersion

; #FUNCTIONS FOR INTERNAL USE# ==================================================================================================
Func _RecursionSet($sVal)
        Switch $sVal
                Case 1
                        Return " -r"
                Case 2
                        Return " -r0"
                Case Else
                        Return " -r-"
        EndSwitch
EndFunc   ;==>_RecursionSet

Func _IncludeFileSet($sVal)
        If StringInStr($sVal, "*") Then
                Return ' -i!"' & $sVal & '"'
        ElseIf StringLeft($sVal, 1) = "@" Then
                Return ' -i"' & $sVal  & '"'
        Else
                Return ' -i!"' & $sVal & '"'
        EndIf
EndFunc   ;==>_IncludeFileSet

Func _ExcludeFileSet($sVal)
        If StringInStr($sVal, "*") Then
                Return ' -x!"' & $sVal & '"'
        ElseIf StringLeft($sVal, 1) = "@" Then
                Return ' -x"' & $sVal & '"'
        Else
                Return ' -x!"' & $sVal & '"'
        EndIf
EndFunc   ;==>_ExcludeFileSet

Func _OverwriteSet($sVal)
        Switch $sVal
                Case 0
                        Return " -aoa"
                Case 1
                        Return " -aos"
                Case 2
                        Return " -aou"
                Case 3
                        Return " -aot"
                Case Else
                        Return " -aoa"
        EndSwitch
EndFunc   ;==>_OverwriteSet

Func _IncludeArcSet($sVal)
        If StringInStr($sVal, "*") Then
                Return ' -ai!"' & $sVal & '"'
        ElseIf StringLeft($sVal, 1) = "@" Then
                Return ' -ai"' & $sVal & '"'
        Else
                Return ' -ai!"' & $sVal & '"'
        EndIf
EndFunc   ;==>_IncludeArcSet

Func _ExcludeArcSet($sVal)
        If StringInStr($sVal, "*") Then
                Return ' -ax!"' & $sVal & '"'
        ElseIf StringLeft($sVal, 1) = "@" Then
                Return ' -ax"' & $sVal & '"'
        Else
                Return ' -ax!"' & $sVal & '"'
        EndIf
EndFunc   ;==>_ExcludeArcSet

Func OnAutoitExit()
        If IsDeclared("hDLL_7ZIP") Then
                DllClose($hDLL_7ZIP)
                If $hArchiveProc Then DllCallbackFree($hArchiveProc)
        EndIf
EndFunc   ;==>OnAutoitExit
 楼主| 发表于 2014-8-21 12:15:40 | 显示全部楼层
还请大侠们帮帮忙。。
发表于 2014-8-21 17:56:03 | 显示全部楼层
我记得 AU3自学手册里面有  天空的S大写的
 楼主| 发表于 2014-8-24 18:10:34 | 显示全部楼层
已经自行解决
发表于 2014-8-28 08:12:43 | 显示全部楼层
7zip32这个dll好象会自己退出,我忘记了 反正有个问题
发表于 2014-8-29 09:10:12 | 显示全部楼层
回复 5# dunphy

老大 既然解決了  是不是可以把研究出來的答案 分享一下呢?? 發個 UDF??
 楼主| 发表于 2014-9-2 20:26:18 | 显示全部楼层
回复 7# kk_lee69


    已在作品区分享
发表于 2014-9-3 09:07:26 | 显示全部楼层
回复 8# dunphy
找不到ㄟ

不好意思  可否 給個連結 感謝!!
 楼主| 发表于 2014-9-3 19:35:31 | 显示全部楼层
回复 6# header


    想想是什么问题?
 楼主| 发表于 2014-9-3 19:36:24 | 显示全部楼层
回复 9# kk_lee69


    http://au3.cc/thread-1116-1-1.html
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-29 09:31 , Processed in 0.095555 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表