UDF > WinAPIEx > Files & Devices > Files >


_WinAPI_SetCompression

Définit l'état de compression d'un fichier ou d'un répertoire

#include <WinAPIFiles.au3>
_WinAPI_SetCompression ( $sFilePath, $iCompression )

Paramètres

$sFilePath Le chemin d'accès au fichier ou au répertoire à compresser.
$iCompression L'état de compression. Ce paramètre peut prendre l'une des valeurs suivantes:
$COMPRESSION_FORMAT_NONE
$COMPRESSION_FORMAT_DEFAULT
$COMPRESSION_FORMAT_LZNT1

Valeur de retour

Succès: Retourne 1.
Échec: Retourne 0 et définit @error <> 0.

Remarque

Si le système de fichiers du volume contenant le fichier ou le répertoire spécifié ne prend pas en charge la compression par fichier ou par répertoire, la fonction échoue. La compression de fichiers est prise en charge pour les fichiers d'une taille maximum non compressé de 30 giga-octets.

Voir aussi

Consultez FSCTL_SET_COMPRESSION dans la librairie MSDN.

Exemple

#include <APISysConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>

Local $sFile = FileOpenDialog('Select File', @ScriptDir, 'All Files (*.*)', 1 + 2)
If @error Then Exit

Switch _WinAPI_GetCompression($sFile)
    Case -1
        MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Compression de fichier', 'Impossible d''effectuer l''opération.')
    Case $COMPRESSION_FORMAT_NONE
        If _WinAPI_SetCompression($sFile, $COMPRESSION_FORMAT_DEFAULT) Then
            MsgBox(BitOR($MB_ICONINFORMATION, $MB_SYSTEMMODAL), 'Compression de fichier', 'Le fichier est compressé avec succès.')
        Else
            MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Compression de fichier', 'Impossible de compresser le fichier.')
        EndIf
    Case Else
        If MsgBox(BitOR($MB_YESNO, $MB_ICONQUESTION, $MB_SYSTEMMODAL), 'Compression de fichier', 'Le fichier est déjà compressé.' & @CRLF & @CRLF & 'Je le décompresse?') = 6 Then
            If _WinAPI_SetCompression($sFile, $COMPRESSION_FORMAT_NONE) Then
                MsgBox(BitOR($MB_ICONINFORMATION, $MB_SYSTEMMODAL), 'Compression de fichier', 'Le fichier est décompressé avec succès.')
            Else
                MsgBox(BitOR($MB_ICONERROR, $MB_SYSTEMMODAL), 'Compression de fichier', 'Impossible de décompresser le fichier.')
            EndIf
        EndIf
EndSwitch