Imports System.IO
Imports System.Management
Public Class MainForm
  
    Private Sub MainForm_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load

    End Sub
 
    Private Sub btnCollect_Click(sender As System.Object, e As System.EventArgs) Handles btnCollect.Click
        Dim tmpInstance, tmpStrings, tmpName, tmpType As New List(Of String)
        Dim query As ObjectQuery = New ObjectQuery("SELECT * FROM Win32_DiskDrive")
        Dim searcher As ManagementObjectSearcher = New ManagementObjectSearcher(query)
        Dim queryCollection As ManagementObjectCollection = searcher.Get
        For Each DiskDrive As ManagementObject In queryCollection
            For Each partition As ManagementObject In DiskDrive.GetRelated("Win32_DiskPartition")
                For Each disk As ManagementBaseObject In partition.GetRelated("Win32_LogicalDisk")
                    If (Convert.ToInt32(disk("DriveType")) = 3) Or (Convert.ToInt32(disk("DriveType")) = 2) Then
                        tmpStrings.Add(DiskDrive("Index") & "|" & disk("Name") & "|" & DiskDrive("Model") & "|" & disk("Description"))
                        If Not tmpInstance.Contains(DiskDrive("Index").ToString) Then tmpInstance.Add(DiskDrive("Index").ToString)
                        If Not tmpName.Contains(DiskDrive("Index").ToString) Then tmpName.Add(DiskDrive("Index").ToString)
                        If Not tmpType.Contains(DiskDrive("Index").ToString) Then tmpType.Add(DiskDrive("Index").ToString)
                    End If
                Next
            Next
        Next
        For i As Short = 0 To tmpStrings.Count - 1
            Dim str() As String = tmpStrings.Item(i).ToString.Split("|")
            tmpInstance(str(0).ToString) &= " " & str(1).ToString
        Next
        For i As Short = 0 To tmpStrings.Count - 1
            Dim str() As String = tmpStrings.Item(i).ToString.Split("|")
            tmpName(str(0)) = str(2).ToString
            tmpType(str(0)) = str(3).ToString
        Next
        For i As Short = 0 To tmpName.Count - 1
            Dim newDevice As New DeviceControl
            newDevice.pcDevice.InstanceName = tmpInstance(i)
            newDevice.lblName.Text = tmpName(i)
            newDevice.lblType.Text = tmpType(i)
            newDevice.Dock = DockStyle.Top
            panelControls.Controls.Add(newDevice)
            newDevice.BringToFront()
        Next
 
    End Sub

    Private Sub panelControls_MouseHover(sender As Object, e As System.EventArgs) Handles panelControls.MouseHover
        panelControls.Focus()
    End Sub
 
End Class
