Définit l'état de compression d'un fichier ou d'un répertoire
#include <WinAPIFiles.au3>
_WinAPI_SetCompression ( $sFilePath, $iCompression )
$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 |
Succès: | Retourne 1. |
Échec: | Retourne 0 et définit @error <> 0. |
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.
Consultez FSCTL_SET_COMPRESSION dans la librairie MSDN.
#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