elvirez
Messages postés2Date d'inscriptionvendredi 8 décembre 2006StatutMembreDernière intervention22 mars 2007
-
21 mars 2007 à 16:32
jmvd2
Messages postés17Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention16 mars 2010
-
9 sept. 2009 à 12:23
Bonjour a tous !
Un grand merci déja à ceux qui vont peut être m'aider.
Voila mon problème :
J'aurais besoin d'un petit programme qui permettrait de connaitre l'espace disque libre restant du disque dur sur un PC (windows XP). Si le resultat est inférieur à un certain seuil, alors ca affiche un message d'alerte (afin que l'utilisateur soit prévenu et fasse le ménage).
Ce contrôle serait effectué chaque jour. (pas forcement redémarage de la bécane).
Existe-t-il un moyen simple de faire cela ? Connaissez vous une adresse ou est publier la réponse à mon problème ?...
C'est hors de mes compétences, qui je dois l'avouer sont très limiter en programmation....
Gobillot
Messages postés3140Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention11 mars 201934 22 mars 2007 à 02:24
pourquoi faire simple quand on peut faire compliqué:
Function GetFreePercentDisk(ByVal sDrive As String) As String
Dim BytesFreeToCalller As Currency
Dim TotalBytes As Currency
Dim TotalFreeBytes As Currency
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 21 mars 2007 à 20:46
Bonsoir à tous
un exemple tout simple, avec fso, à adapter en vb6.
'Inventaire lecteurs
Dim fso, d, dc, s, n
Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d in dc
Select Case d.DriveType
Case 2:
' Conversion de la taille totale en Go : division par 1073741824 (1024x1024x1024)
' Conversion de la taille totale en Mo : division par 1048576 (1024x1024)
p = "=> Espace total: " & FormatNumber(d.TotalSize/1024/1024/1024, 1) & " Go"
q = "=> Espace disponible: " & FormatNumber(d.AvailableSpace/1024/1024/1024, 1) & " Go"
s = s & d.DriveLetter & ":" &vbCrLf& p &vbCrLf& q &vbCrLf
s = s & "Pourcentage occupé : " &_
FormatPercent((d.ToTalSize - d.AvailableSpace) / d.ToTalSize, 0)
s = s &vbCrLf& "Pourcentage libre : " &_
FormatPercent(d.AvailableSpace / d.TotalSize,0) &vbCrLf
If FormatPercent(d.AvailableSpace / d.TotalSize,0) < "20%" Then
Msgbox "disk " & d.DriveLetter &vbTab& "seuil < à 20%",vbCritical
End If
Case Else
End Select
Next
MsgBox s,,"Inventaire des Disques"
'---------------------
Pour la périodicité, mettre le code en tâche planifiée est une possibilité.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 21 mars 2007 à 22:46
Salut Jean-Marc,
ton code fonctionne parfaitement en VB6 (et avec VB 2005 aussi), juste 2 modifs à faire :
déclarer q et p, et tes &vbCrLf& ainsi que &_ doivent avoir un espace avant et après le &.
Ton code pour VB6 (et colorisé ) :
Option Explicit
Private Sub Form_Load()
'Inventaire lecteurs
Dim fso, d, dc, s, n, q, p
Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d In dc
Select Case d.DriveType
Case 2:
' Conversion de la taille totale en Go : division par 1073741824 (1024x1024x1024)
' Conversion de la taille totale en Mo : division par 1048576 (1024x1024)
If FormatPercent(d.AvailableSpace / d.TotalSize, 0) < "20%" Then
MsgBox "disk " & d.DriveLetter & vbTab & "seuil < à 20%", vbCritical
End If
Case Else
End Select
Next
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 22 mars 2007 à 01:26
Salut BruNews,
ça peut le faire ?
Private Declare Function GetDiskFreeSpace Lib "kernel32" Alias "GetDiskFreeSpaceA" (ByVal lpRootPathName As String, lpSectorsPerCluster As Long, lpBytesPerSector As Long, lpNumberOfFreeClusters As Long, lpTtoalNumberOfClusters As Long) As Long
Private Sub EXEMPLE()
MsgBox GetFreePercentDisk("C:") '13,42
MsgBox GetFreePercentDisk("D:") '94,51
MsgBox GetFreePercentDisk("F:") '29,27
Unload Me
End Sub
Function GetFreePercentDisk(ByVal sDrive As String) As String
Dim Sectors As Long, Bytes As Long, FreeC As Long, TotalC As Long, Total As Long, Freeb As Long
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 22 mars 2007 à 01:35
NON !!!
GetDiskFreeSpace est obsolète et a été remplacée par la version Ex depuis Win95 SE car elle donne des résultats erronés avec les grands disques, il ne faut absolument plus l'employer.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 22 mars 2007 à 02:05
Bon, j'espère alors que c'est mieux :
Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" Alias "GetDiskFreeSpaceExA" (ByVal lpRootPathName As String, lpFreeBytesAvailableToCaller As Currency, lpTotalNumberOfBytes As Currency, lpTotalNumberOfFreeBytes As Currency) As Long
Function GetFreePercentDisk(ByVal sDrive As String) As String
Dim BytesFreeToCalller As Currency, TotalBytes As Currency
Dim TotalFreeBytes As Currency, TotalBytesUsed As Currency
Private Sub Form_Load()
MsgBox GetFreePercentDisk("C:") '13.44 %
MsgBox GetFreePercentDisk("D:") '94.55 %
MsgBox GetFreePercentDisk("F:") '29.27 %
Unload Me
End Sub
elvirez
Messages postés2Date d'inscriptionvendredi 8 décembre 2006StatutMembreDernière intervention22 mars 2007 22 mars 2007 à 08:22
Merci a tous d'avoir répondu !
Je ne post pas souvent de message sur les forums, je fait d'abord des recherches sur les topics existants (qui est en effet dans mes compétences !!), il est vrai que cette fois ci je suis pressé par le temps....
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 22 mars 2007 à 17:17
Bonjour à tous
Salut Mortalino,
Suivant avec opiniatreté les conseils avisés de BruNews, je ne déposerai pas mon p.... de code vbs utilisant ce p..... de fso !!!
BruNews me restreint avec "mon" wmi, wbem, dictionary !!! Exit fso ....
Non, sérieusement, il a surement raison et l'a déjà maintes fois signifié.
Mettre une source en wmi n'est pas justifié, vu la multitude d'exemple via google.
Daniel Gobillot utilse "GetDiskFreeSpaceEx"....function exclusive de vb6 ???
Toutefois, il serait peut-être utile, pour l'esthétisme, de rajouter un test sur Mo ou Go (pour LCID fr-fr).
jmvd2
Messages postés17Date d'inscriptionvendredi 11 avril 2003StatutMembreDernière intervention16 mars 2010 9 sept. 2009 à 12:23
Bonjour à tous,
Voici ma version en asp.
Je cherche à interroger des disques distants à partir d'un fichier texte avec mes serveurs dedant. Pouvez-vous m'aider ?
<%
'Inventaire lecteurs
Dim fso, d, dc, s, n
Set fso = CreateObject("Scripting.FileSystemObject")
Set dc = fso.Drives
For Each d in dc
Select Case d.DriveType
Case 2:
' Conversion de la taille totale en Go : division par 1073741824 (1024x1024x1024)
' Conversion de la taille totale en Mo : division par 1048576 (1024x1024)
p = " " & "Espace total: " & FormatNumber(d.TotalSize/1024/1024/1024, 1) & " Go "
q = "=> Espace disponible: " & FormatNumber(d.AvailableSpace/1024/1024/1024, 1) & " Go" & "
"
s = s & d.DriveLetter & ":" &vbCrLf& p &vbCrLf& q &vbCrLf
s = s & " Pourcentage occupé : " &_
FormatPercent((d.ToTalSize - d.AvailableSpace) / d.ToTalSize, 0)
s = s &vbCrLf& "Pourcentage libre : " &_
FormatPercent(d.AvailableSpace / d.TotalSize,0) & "
" &vbCrLf
If FormatPercent(d.AvailableSpace / d.TotalSize,0) > "10%" Then
Response.Write ( "disk " & d.DriveLetter &vbTab& "Alerte ! Seuil < à 20%" & " " & "
")
End If
Case Else
End Select
Next
'MsgBox s,,"Inventaire des Disques"
Response.Write ( s )