qqn peut m'aider



mci
Code : Tout sélectionner
drive.s = "C:\"
Structure Quad
L1.l
L2.l
EndStructure
GetDiskFreeSpaceEx_(drive, FB.Quad, TB.Quad, TFB.Quad)
TB.Quad\L1>>20
TB.Quad\L2<<12
TotalGB.f = (TB.Quad\L1 + TB.Quad\L2) / 1024
TFB.Quad\L1>>20
TFB.Quad\L2<<12
FreeGB.f = (TFB.Quad\L1 + TFB.Quad\L2) / 1024
UsedGB.f = TotalGB - FreeGB
MessageRequester("Disk Size drive "+drive,"Space Total: "+StrF(TotalGB,2)+" GB"+Chr(13)+"Space Free : "+StrF(FreeGB,2)+" GB"+Chr(13)+"Space Used: "+StrF(UsedGB,2)+" GB",0)
End
Code : Tout sélectionner
Structure DriveInfos
DriveLetter.s
DriveType.l
DriveTypeString.s
NameOfVolume.s
EndStructure
NewList DriveList.DriveInfos()
Procedure GetDrive(ListDriveType.l)
Protected drive.s, DriveLetter.s, DriveType.l, Start.l, LengthDrive.l, DriveTypeString.s
#REMOVABLE_DRIVE = 1
#FIXED_DRIVE = 2
#REMOTE_DRIVE = 4
#CDROM_DRIVE = 8
#RAMDISK_DRIVE = 16
#UNKNOWN_DRIVE = 32
#ALL_DRIVE = 63
; On vide la liste
ClearList(DriveList())
; On récupère la lettre des différents lecteurs présent sur l'ordinateur
drive = Space(255)
LengthDrive = GetLogicalDriveStrings_(255, @drive)
For Start = 0 To LengthDrive - 4 Step 4
DriveLetter.s = PeekS(@drive + Start, 3) ; on récupère une lettre
DriveType.l = GetDriveType_(@DriveLetter) ; on récupère le type du lecteur
Select DriveType ; On donne un nom au type de lecteur
Case #DRIVE_REMOVABLE : DriveType = #REMOVABLE_DRIVE : DriveTypeString.s = "Disquette"
Case #DRIVE_FIXED : DriveType = #FIXED_DRIVE : DriveTypeString.s = "Disque dur"
Case #DRIVE_REMOTE : DriveType = #REMOTE_DRIVE : DriveTypeString.s = "Lecteur réseau"
Case #DRIVE_CDROM : DriveType = #CDROM_DRIVE : DriveTypeString.s = "CD-ROM"
Case #DRIVE_RAMDISK : DriveType = #RAMDISK_DRIVE : DriveTypeString.s = "RamDisk"
Case #DRIVE_UNKNOWN : DriveType = #UNKNOWN_DRIVE : DriveTypeString.s = ""
EndSelect
If DriveType & ListDriveType ; on regarde si le type du lecteur correspond à ceux demandés
AddElement(DriveList())
DriveList()\DriveLetter = RemoveString(DriveLetter, "\")
DriveList()\DriveType = DriveType
DriveList()\DriveTypeString = DriveTypeString
If DriveLetter <> "A:\" And DriveLetter <> "B:\"
DriveList()\NameOfVolume = Space(255)
GetVolumeInformation_(@DriveLetter, @DriveList()\NameOfVolume, 255, 0, 0, 0, 0, 0)
DriveList()\NameOfVolume = Trim(DriveList()\NameOfVolume)
Else
DriveList()\NameOfVolume = ""
EndIf
EndIf
Next
EndProcedure
;- Debut du test
GetDrive(#REMOVABLE_DRIVE | #CDROM_DRIVE | #FIXED_DRIVE)
ResetList(DriveList())
While NextElement(DriveList())
Debug DriveList()\DriveLetter + " " + DriveList()\DriveTypeString + " " + DriveList()\NameOfVolume
; If DriveList()\DriveType = #FIXED_DRIVE
Patch.s=DriveList()\DriveLetter
GetDiskFreeSpace_(Patch, @dwSectorsPerCluster.l, @dwBytesPerCluster.l, @dwFreeClusters.l, @dwTotalClusters.l)
a.f=dwFreeClusters/1000000
b.f=dwTotalClusters/1000000
EspaceLibre.l= dwBytesPerCluster*dwSectorsPerCluster*a
EspaceTotal.l= dwBytesPerCluster*dwSectorsPerCluster*b
; Debug dwSectorsPerCluster
; Debug dwBytesPerCluster
; Debug dwFreeClusters
; Debug dwTotalClusters
; le résultat est arrondi au dernier chiffre
Debug "Espace Total="+Str(EspaceTotal)+" Mo ,"+"Espace Libre="+Str(EspaceLibre)+" Mo"
; EndIf
Debug ""
Wend
Code : Tout sélectionner
Procedure.l GetDiskFreeSpace(lecteur.s, type.l)
; lecteur = nom du lecteur
; type = choix de la réponse, 0 = espace libre sur le lecteur, 1 = taille du lecteur
; la taille retourné est en ko
Protected val.l
Protected txt.s
Memory1 = AllocateMemory(1, 5, 0)
Memory2 = AllocateMemory(2, 5, 0)
Memory3 = AllocateMemory(3, 5, 0)
GetDiskFreeSpaceEx_(lecteur + ":\", Memory1, Memory2, Memory3)
Select type
Case 0 : Memory1 + 1 : CopyMemory(Memory1, @size.l, 4)
Case 1 : Memory2 + 1 : CopyMemory(Memory2, @size.l, 4)
EndSelect
size = size / 4
ProcedureReturn size
EndProcedure
Procedure.s GetDiskFreeSpaceEx(lecteur.s, type.l, unit.l, approximation.l, auto.l)
; lecteur = nom du lecteur
; type = choix de la réponse, 0 = espace libre sur le lecteur, 1 = taille du lecteur
; unit = unité de la taille, 0 = Ko, 1 = Mo, 2 = Go
; approximation = nombre de chiffre après la virgule
; si auto = 1, choix de l'unité automatique et approximation automatique
Protected val.l
Protected txt.s
Memory1 = AllocateMemory(1, 5, 0)
Memory2 = AllocateMemory(2, 5, 0)
Memory3 = AllocateMemory(3, 5, 0)
GetDiskFreeSpaceEx_(lecteur + ":\", Memory1, Memory2, Memory3)
Select type
Case 0 : Memory1 + 1 : CopyMemory(Memory1, @size.l, 4)
Case 1 : Memory2 + 1 : CopyMemory(Memory2, @size.l, 4)
EndSelect
size = size / 4
If auto
approximation = 0 : unit = 0
If size >= 1000 : unit = 1 : approximation = 2 : EndIf
If size >= 10000 : unit = 1 : approximation = 1 : EndIf
If size >= 1000000 : unit = 2 : approximation = 2 : EndIf
If size >= 10000000 : unit = 2 : approximation = 1 : EndIf
EndIf
Select unit
Case 1 : val = 1024 : txt = " Mo"
Case 2 : val = 1024 * 1024 : txt = " Go"
Default : val = 1 : txt = " Ko"
EndSelect
ProcedureReturn StrF(size / val, approximation) + txt
EndProcedure
Debug GetDiskFreeSpace("c", 1)
Debug GetDiskFreeSpaceEx("c", 1, 0, 0, 1)
Code : Tout sélectionner
lect.s = "C:\"
GetDiskFreeSpace_(lect, @Secteurs_Par_Cluster, @Bytes_Par_Secteurs, @Cluster_libre, @Total_Cluster)
espace_libre = (((Cluster_libre * Secteurs_Par_Cluster) / 1024) * Bytes_Par_Secteurs) / 1024
espace_total = (((Total_Cluster * Secteurs_Par_Cluster) / 1024) * Bytes_Par_Secteurs) / 1024
espace_utilise = espace_total - espace_libre
pourcent_espace_libre = (100 * espace_libre) / espace_total
MessageRequester("Lecteur :", "Lecteur : " + lect, 0)
MessageRequester("Secteur par clusteur : ", "Secteur par clusteur : " + Str(Secteurs_Par_Cluster), 0)
MessageRequester("Bytes par secteurs : ", "Bytes par secteurs : " + Str(Bytes_Par_Secteurs), 0)
MessageRequester("Cluster libres : ", "Cluster libres : " + Str(Cluster_libre), 0)
MessageRequester("Nombre total de cluster : ", "Nombre total de cluster : " + Str(Total_Cluster), 0)
MessageRequester("Capacité du lecteur : ", "Capacite du lecteur : " + Str(espace_total) + " Mo", 0)
MessageRequester("Espace utilisé : ", "Espace utilisé : " + Str(espace_utilise) + " Mo", 0)
MessageRequester("Espace libre : ", "Espace libre : " + Str(espace_libre) + " Mo", 0)
MessageRequester("Pourcentage d'espace libre : ", "Pourcentage d'espace libre : " + Str(pourcent_espace_libre) + " %", 0)