Alors Denis, je lance d'abord le scan. Je regarde le log et ensuite je regarde tous les fichiers qui ont été signalés afin de voir le contexte (et si ce n'est pas de l'hexa).
Je vais vérifier chaque semaine, je pense.
Toutes les pages et fichiers sont vérifiés. S'ils sont dans les répertoires/sous-répertoires indiqués.
Les archives, je n'y vais pas pensé, mais ce n'est pas bête du tout. J'avais déjà travaillé la dessus.
Code : Tout sélectionner
; PureBasic Visual Designer v3.90 build 1360
IncludeFile "ZipInclude.pb"
IncludeFile "UnRar_Include.pb"
zi.ZipEntryInfo
zip$ = "Archives ZIP|*.zip"
If RAR_Init() = 0
MessageRequester("Erreur", "Impossible d'intialiser la librairie RAR ! Vérifiez la présence de unrar.dll et sa version.", #MB_ICONERROR)
rar$ = ""
Else
rar$ = "|Archives RAR|*.rar"
EndIf
Open_Window_0()
AddGadgetColumn(#ListIcon_ZAB, 1, "Taille décompréssée", 100)
AddGadgetColumn(#ListIcon_ZAB, 2, "Taille compréssée", 100)
Mask$ = zip$+rar$
Repeat
Event = WaitWindowEvent()
If Event = #PB_EventGadget
;Debug "WindowID: " + Str(EventWindowID())
GadgetID = EventGadgetID()
If GadgetID = #Button_Open
fichierzip$ = OpenFileRequester("Séléctionnez une archive", "C:\", Mask$, 0)
Directory$ = GetPathPart(fichierzip$)
TArchive$ = GetExtensionPart(fichierzip$)
Select TArchive$
Case "zip"
Ouvert = ZipOpen(fichierzip$, #Zip_DefaultOptions)
If Ouvert = #ZIP_OK
ClearGadgetItemList(#ListIcon_ZAB)
DisableGadget(#Button_Extract, 0)
NbFiles = ZipGetFileCount()
If NbFiles = 0
MessageRequester("Attention", "L'archive est vide !", #MB_ICONWARNING)
EndIf
FFile$ = ZipFindFirstFile()
ZipSelectFile(1)
ZipGetFileInfo(zi)
uni$ = "o"
FileSize = zi\FileSize
CompressedSize = zi\CompressedSize
If FileSize > 1024 And CompressedSize > 1024
FileSize = FileSize/1024
CompressedSize = CompressedSize/1024
uni$ = "ko"
EndIf
AddGadgetItem(#ListIcon_ZAB, -1, FFile$+Chr(10)+Str(FileSize)+" "+uni$+Chr(10)+Str(CompressedSize)+" "+uni$)
If NbFiles > 1
For k = 2 To NbFiles
ZipSelectFile(k-1)
File$ = ZipFindNextFile()
ZipSelectFile(k)
ZipGetFileInfo(zi)
uni$ = "o"
FileSize = zi\FileSize
CompressedSize = zi\CompressedSize
If FileSize > 1024 And CompressedSize > 1024
FileSize = FileSize/1024
CompressedSize = CompressedSize/1024
uni$ = "ko"
EndIf
AddGadgetItem(#ListIcon_ZAB, -1, File$+Chr(10)+Str(FileSize)+" "+uni$+Chr(10)+Str(CompressedSize)+" "+uni$)
Next k
EndIf
Else
MessageRequester("Erreur", "Impossible d'ouvrir l'archive demandée ! Erreur : "+Str(Ouvert), #MB_ICONERROR)
EndIf
Case "rar"
Ouvert = RAR_OpenArchive(fichierzip$, #RAR_OM_LIST)
If Ouvert > 21
k = 0
Repeat
Debug k
info = RAR_ReadHeader(Ouvert)
If info = #ERAR_END_ARCHIVE And k = 1
MessageRequester("Attention", "L'archive est vide !", #MB_ICONWARNING)
EndIf
Debug HeaderData\ArcName
Debug HeaderData\FileName
Debug HeaderData\PackSize
Debug HeaderData\UnpSize
k = k+1
Until info = #ERAR_END_ARCHIVE
Else
MessageRequester("Erreur", "Impossible d'ouvrir l'archive demandée ! Erreur : "+Str(Ouvert), #MB_ICONERROR)
EndIf
EndSelect
ElseIf GadgetID = #ListIcon_ZAB
ElseIf GadgetID = #Button_Extract
FileNum = GetGadgetState(#ListIcon_ZAB)+1
If FileNum = 0
MessageRequester("Erreur", "Aucun fichier à extraire séléctionné !", #MB_ICONERROR)
Else
Fichier$ = GetGadgetItemText(#ListIcon_ZAB, FileNum-1, 0)
cslash = FindString(Fichier$, "/", 0)
If cslash > 1
lenfile = Len(Fichier$)
FichOD$ = Right(Fichier$, lenfile - cslash)
Else
FichOD$ = Fichier$
EndIf
SavDir$ = SaveFileRequester("Choisissez le répertoire d'extraction", Directory$+FichOD$, "Tous les fichiers|*.*", 1)
Saved$ = GetFilePart(SavDir$)
BaseDir$ = GetPathPart(SavDir$)
Extract = ZipExtractFile(BaseDir$, FileNum)
If Extract <> #ZIP_OK
MessageRequester("Erreur", "Extraction échouée ! Erreur : "+Str(Extract), #MB_ICONERROR)
Else
If BaseDir$+Saved$ <> BaseDir$+Fichier$
RenameFile(BaseDir$+Fichier$, BaseDir$+Saved$)
EndIf
EndIf
FileNum = 0
Extract = 0
Fichier$ = ""
SavDir$ = ""
Saved$ = ""
BaseDir$ = ""
EndIf
EndIf
EndIf
Until Event = #PB_EventCloseWindow
End
Je m'étais arreté en cours car le RAR me prennais gentillement la tête. Dans les examples ca marchait et dans mon code non. Donc j'avais abandonné. Mais je pourrais au moins le faire pour les zips.