Rubrik: Dateisystem · Laufwerke | VB-Versionen: VB4, VB5, VB6 | 02.04.01 |
Ermitteln des freien Speicherplatz eines Laufwerks Zwei Möglichkeiten zur Ermittlung des korrekten freien Speicherplatzes eines Laufwerks (auch über 2GB). | ||
Autor: Dieter Otter | Bewertung: | Views: 27.624 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Den freien Speicherplatz einer Festplatte zu ermitteln, ist gar nicht so leicht. Erst ab Visual-Basic 6 lässt sich dies ohne Windows-API bewerkstelligen. Wir zeigen Ihnen hier, wie Sie den freien Festplatten-Speicher sowohl unter VB4/5, als auch unter VB6 ermitteln können.
Hinweis am Rande:
Die beiden nachfolgenden Routinen umgehen auch die 2 GByte - Hürde!
Ermitteln des freien Festplattenspeichers mit Hilfe des neuen FileSystem-Objects (ab VB6)
Public Function GetDiskSpaceFree(ByVal Drive As String) _ As Double Dim FSO As Object Dim Drv As Object Dim SpaceFree As Double SpaceFree = -1 Drive = UCase$(Left$(Drive, 1)) Set FSO = CreateObject("Scripting.FileSystemObject") For Each Drv In FSO.Drives If Drv.DriveLetter = Drive Then On Local Error Resume Next SpaceFree = Drv.AvailableSpace If Err<>0 Then SpaceFree = -1 On Local Error Goto 0 Exit For End If Next GetDiskSpaceFree = SpaceFree End Function
Ermitteln des freien Festplattenspeichers mit Hilfe der Windows-API (VB4/VB5)
' zunächst die benötigten Deklarationen Private Declare Function GetDiskFreeSpaceEx Lib "kernel32" _ Alias "GetDiskFreeSpaceExA" ( _ ByVal lpDirectoryName As String, _ lpFreeBytesAvailableToCaller As Currency, _ lpTotalNumberOfBytes As Currency, _ lpTotalNumberOfFreeBytes As Currency) As Long Public Function GetDiskSpaceFree(ByVal Drive As String) _ As Double Dim FreeBytesAvail As Currency Dim TotalSpace As Currency Dim AvailSpace As Currency Dim sTmp As String If Len(Drive) = 1 Then Drive = Drive + ":\" If GetDiskFreeSpaceEx(Drive, FreeBytesAvail, _ TotalSpace, AvailSpace) = 0 Then AvailSpace = -1 sTmp = CStr(AvailSpace) If InStr(sTmp, ",") > 0 Then _ sTmp = Left$(sTmp, InStr(sTmp, ",") - 1) + _ Mid$(sTmp, InStr(sTmp, ",") + 1) GetDiskSpaceFree = CDbl(sTmp) End Function
Hinweis:
Existiert das angegebene Laufwerk nicht oder ist dieses nicht bereit (kein Datenträger vorhanden), so gibt die GetDiskSpaceFree-Funktion in beiden Fällen den Wert -1 zurück.
Beispiel für den Aufruf (sowohl VB4/5 als auch VB6)
' Freier Speicher Laufwerk C: Dim SpaceFree As Double SpaceFree = GetDiskSpaceFree("C") If SpaceFree < 0 Then MsgBox "Fehler... Evtl. Laufwerk nicht bereit!" Else MsgBox Format$(SpaceFree, "###,###,###,###") + _ " Bytes frei" End If