Tipp 0161 Freien Laufwerksplatz ermitteln (WMI)
Autor/Einsender:
Datum:
  Michael Werner
02.05.2007
Entwicklungsumgebung:   VB.Net 2005
Framework:   2.0
Über WMI (Windows Management Instrumentation) kann lesend und schreibend, lokal oder vom Netzwerk aus, auf nahezu alle Einstellungen eines Windows-Computers zugegriffen werden. Als erstes muss ein Verweis auf die .Net-Komponente System.Management gesetzt werden. Mit einem Import von System.Management erspart man sich darüber hinaus lästige Schreibarbeit beim Zugriff auf die notwendigen Klassen im Namespace.
In unserem Tipp werden zunächst alle im Computer bestehenden Laufwerke mit Environment.GetLogicalDrives ausgelesen und der DataSource-Eigenschaft der ListBox übergeben. Im SelectedIndexChanged-Ereignis der ListBox wird dann das ausgewählte Laufwerk der benutzerdefinierten Funktion GetDiskSpace übergeben, die dann den FreeSpace als System.UInt64 zurückgibt, dessen Wert dann in Byte-Formate umgerechnet wird.
 
Imports System.Management

Public Class Form1
  Public Function GetDiskSpace(ByVal drive As String) _
        As System.UInt64
    Dim diskClass As New ManagementClass("Win32_LogicalDisk")
    Dim disks As ManagementObjectCollection = _
          diskClass.GetInstances()
    Dim disk As ManagementObject
    Dim space As System.UInt64

    drive = drive.ToUpper.Substring(0, 2)

    For Each disk In disks
      If CStr(disk("Name")) = drive Then
        space = CType(disk("FreeSpace"), System.UInt64)
      End If
    Next disk
    Return space
  End Function

  Private Sub Form1_Load(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles MyBase.Load
    ListBox1.DataSource = Environment.GetLogicalDrives()
  End Sub

  Private Sub ListBox1_SelectedIndexChanged(ByVal sender As _
        System.Object, ByVal e As System.EventArgs) Handles _
        ListBox1.SelectedIndexChanged
    Dim b, kb, mb, gb As Double

    Label1.Text = "Bitte warten..."
    Label2.Text = ""
    Label3.Text = ""
    Label4.Text = ""
    Label5.text = ""
    Label1.Refresh()
    Label2.Refresh()
    Label3.Refresh()
    Label4.Refresh()
    Label5.Refresh()

    Cursor.Current = Cursors.WaitCursor()

    b = CDbl((GetDiskSpace( _
          ListBox1.SelectedItem.ToString)).ToString)

    kb = b * 1 / 1024
    mb = b * 1 / 1048576
    gb = b * 1 / 1073741824

    Label1.Text = b.ToString("n") & " Byte"
    Label2.Text = kb.ToString("f3") & " KiloByte"
    Label3.Text = mb.ToString("f3") & " MegaByte"
    Label4.Text = gb.ToString("f3") & " GigaByte"
    Label5.Text = "Freier Platz auf Laufwerk " & _
          ListBox1.SelectedItem.ToString

    Cursor.Current = Cursors.Default()
  End Sub

  Private Sub Button1_Click(ByVal sender As System.Object, _
        ByVal e As System.EventArgs) Handles Button1.Click
    Me.Close()
  End Sub
End Class
 
Hinweis
Um diesen Tipp ausführen zu können, muss WMI installiert sein. Dies ist bei Windows 2000, Windows XP und Windows ME (Millenium Edition) standardmäßig der Fall. Für Windows 95/98 und NT 4.0 ist das WMI CORE 1.5 als Download verfügbar, das eine vergleichbare Funktionalität bietet.
Weitere Links zum Thema
Aktuelle Druckaufträge auslesen (WMI)
System-Informationen auslesen (WMI)
Windows beenden (WMI)

Windows-Version
98/SE
ME
NT
2000
XP
Vista
Win 7


Download  (17,9 kB) Downloads bisher: [ 457 ]

Vorheriger Tipp Zum Seitenanfang Nächster Tipp

Startseite | Tipps | Projekte | Tutorials | Bücherecke | VB-/VBA-Tipps | API-Referenz | Komponenten | VB.Net-Forum | VB/VBA-Forum | DirectX-Forum | Foren-Archiv | DirectX | Chat | Spielplatz | Links | Suchen | Stichwortverzeichnis | Feedback | Impressum

Seite empfehlen Bug-Report
Letzte Aktualisierung: Freitag, 20. Januar 2012