vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
Eigene Klasse als Array speichern 
Autor: michael_s84
Datum: 31.10.13 10:04

Hallo zusammen,

ich hoffe ich bin in diesem Forum richtig.

Ich bin gerade dabei mich mit den Win32_Classes zu beschäftigen. Hierzu habe ich mir eine Klassenbibliothek erstellt, in der ich meine eigenen Klassen anlege und mit Funktionen auslesen kann.

Public Class WMI
 
    Private Shared _LogicalDisk(0) As LogicalDisk
    Public Shared Function GetListOfLogicalDrives(strHost As String) As _
      LogicalDisk()
        If strHost = Nothing Then
            strHost = "."
        End If
        Try
            Dim oWMI As Object = GetObject("winmgmts:\\" & strHost & _
              "\root\CIMV2")
            Dim sSQL As String = "SELECT * FROM Win32_LogicalDisk"
            Dim AllDrives As Object = oWMI.ExecQuery(sSQL)
            Dim i As Integer = 0
 
            If AllDrives.count > 0 Then
                ReDim _LogicalDisk(AllDrives.Count - 1)
                For Each aktDrive In AllDrives
                    _LogicalDisk(i) = New LogicalDisk(CStr( _
                      aktDrive.Caption.ToString), _
                                                    CStr( _
                                                    aktDrive.CreationClassName._
                                                    ToString), _
                                                    CStr( _
                                                    aktDrive.Description.ToStri_
                                                    ng), _
                                                    CStr( _
                                                    aktDrive.DeviceID.ToString))
                    i = i + 1
                    MsgBox(aktDrive.Description.ToString)        'Hier stimmt 
                    ' die Description noch  (Lokale Festpalatte) bei index (0)
                Next aktDrive
                MsgBox(_LogicalDisk(0).Description)             'Hier stimmt 
                ' die description schon nicht mehr (Netzlaufwerk)
                Return _LogicalDisk
            Else
                Return Nothing
            End If
        Catch
            MsgBox(ErrorToString)
            Return Nothing
        End Try
    End Function
 
 
End Class   'Win32_LogicalDisk
 
 
Public Class LogicalDisk
 
    Friend Shared _Caption As String = Nothing
    ''' <summary>
    ''' 
    ''' </summary>
    Public ReadOnly Property Caption As String
        Get
            Return _Caption
        End Get
    End Property
 
    Friend Shared _CreationClassName As String
    ''' <summary>
    ''' 
    ''' </summary>
    Public ReadOnly Property CreationClassName As String
        Get
            Return _CreationClassName
        End Get
    End Property
 
    Friend Shared _DeviceID As String
    ''' <summary>
    ''' 
    ''' </summary>
    Public ReadOnly Property DeviceID As String
        Get
            Return _DeviceID
        End Get
    End Property
 
    Friend Shared _Description As String
    ''' <summary>
    ''' 
    ''' </summary>
    Public ReadOnly Property Description As String
        Get
            Return _Description
        End Get
    End Property
 
    Sub New(strCaption As String, _
            strCreationClassName As String, _
            strdescription As String, _
            strDeviceID As String)
        _Caption = strCaption
        _CreationClassName = strCreationClassName
        _Description = strdescription
        _DeviceID = strDeviceID
    End Sub
 
End Class
Ich habe dann folgendermaßen versucht die Eigenschaften der einzelnen LogicalDisk auszugeben.

    Sub Main()
        Dim o() As LogicalDisk = WMI.GetListOfLogicalDrives(".")
        Console.WriteLine(o(7).Description)
        For Each t In o
            Console.WriteLine(t.Description)
        Next
 
        Console.ReadLine()
    End Sub
Ich bekomme in der Console auch 8 Descriptions angezeigt (habe 8 Laufwerke). Allerdings ist die Description bei allen LogicalDisk "Netzlaufwerk". Es müsste aber korreckt Lokale Festplatte, CD, Wechseldatenträger, Netzlaufwerk, usw. sein.

Kann mir jemand von euch sagen wo ich hier meinen Fehler habe? Oder ist mein Lösungsansatz hier schon komplett falsch?
Ich hoffe ich konnte mich einigermaßen verständlich ausdrücken.

Vielen Dank schon mal für eure Hilfe.

---------------------------------------------------

alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Eigene Klasse als Array speichern1.139michael_s8431.10.13 10:04
Re: Eigene Klasse als Array speichern516Manfred X31.10.13 10:49
Re: Eigene Klasse als Array speichern546michael_s8431.10.13 11:00
Re: Eigene Klasse als Array speichern524michael_s8431.10.13 11:31

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel