![]() |
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
|
|
|
|
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.
|
|
|
|
Windows-Version |
98/SE |
 |
|
ME |
 |
|
NT |
 |
|
2000 |
 |
|
XP |
 |
|
Vista |
 |
|
Win
7 |
 |
|
|
|
Download (17,9 kB)
|
Downloads bisher: [ 472 ]
|
|
|