[VB.NET] การอ่านค่าคุณสมบัติทั้งหมดรวดเดียวของอุปกรณ์คอมพิวเตอร์ด้วย WMI
http://www.g2gnet.com/webboard/images/vbnet/wmiinfo.pngโค้ดชุดนี้ไม่มีอะไรมาก เกิดจากความขี้เกียจของแอดมินในการใช้ WMI Creator เพื่อจะมาดูรายการคุณสมบัติของอุปกรณ์แต่ละตัว ก็เลยเลือกเอาตัวหลักๆ เช่น Mainboard หรือ Disk Drive มามัดรวมกัน ... หากต้องการจะดูอุปกรณ์อื่นๆ ก็เลือกมาจาก WMI Creator เพิ่มเอาเองล่ะกันครับ
มาดูโค้ดฉบับเต็มกันเถอะ ...
' / --------------------------------------------------------------------------------
' / Developer : Mr.Surapon Yodsanga (Thongkorn Tubtimkrob)
' / eMail : thongkorn@hotmail.com
' / URL: http://www.g2gnet.com (Khon Kaen - Thailand)
' / Facebook: https://www.facebook.com/g2gnet (For Thailand)
' / Facebook: https://www.facebook.com/commonindy (Worldwide)
' / MORE: http://www.g2gnet.com/webboard
' /
' / Purpose: Read Information with WMI (Windows Management Instrumental)
' / Microsoft Visual Basic .NET (2010)
' /
' / This is open source code under @Copyleft by Thongkorn Tubtimkrob.
' / You can modify and/or distribute without to inform the developer.
' / --------------------------------------------------------------------------------
'// Don't forget add --> Reference --> System.Management
Imports System.Management
Public Class frmWMIInformation
Private Sub frmWMIInformation_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
'// หากอยากได้ Class อื่นๆ ให้ไปดูจาก WMI Creator ครับ
With cmbDevice
.Items.Add("Win32_BaseBoard")
.Items.Add("Win32_PhysicalMedia")
.Items.Add("Win32_NetworkAdapter")
.Items.Add("Win32_Processor")
.Items.Add("Win32_DiskDrive")
.Items.Add("Win32_DiskDrive USB Only")
.SelectedIndex = 0
End With
End Sub
Private Sub cmbDevice_SelectedIndexChanged(sender As System.Object, e As System.EventArgs) Handles cmbDevice.SelectedIndexChanged
Select Case cmbDevice.SelectedIndex
Case 0, 1, 2, 3
Call GetWMIInfo()
Case 4, 5
Call GetUsbInfo()
End Select
End Sub
Private Sub GetWMIInfo()
'// Initialize ListView Control
With lvwData
.Clear()
.View = View.Details
.GridLines = True
.FullRowSelect = True
.HideSelection = False
.MultiSelect = False
.Columns.Add("Properties", lvwData.Width \ 2 - 130)
.Columns.Add("Values", lvwData.Width \ 2 + 100)
End With
Dim LV As ListViewItem
Try
'// Windows Query Language หรือ WQL
Dim WmiQuery As String = "SELECT * FROM " & cmbDevice.Text
Dim WmiSearcher As New ManagementObjectSearcher(WmiQuery)
For Each info As ManagementObject In WmiSearcher.Get()
For Each item As PropertyData In info.Properties()
Try
LV = lvwData.Items.Add("" & item.Name)
LV.SubItems.Add("" & item.Value)
Catch ex As Exception
End Try
Next
Next
Catch err As ManagementException
MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
End Try
End Sub
' / --------------------------------------------------------------------------------
' / Function to read Usb Flash Information and return value of all drives.
Sub GetUsbInfo()
' Initialize ListView Control
With lvwData
.Clear()
.View = View.Details
.GridLines = True
.FullRowSelect = True
.HideSelection = False
.MultiSelect = False
.Columns.Add("Properties", lvwData.Width \ 2 - 130)
.Columns.Add("Values", lvwData.Width \ 2 + 100)
End With
Dim LV As ListViewItem
Try
'// Windows Query Language หรือ WQL
Dim WmiQuery As String = "SELECT * FROM " & "Win32_DiskDrive"
Dim WmiSearcher As New ManagementObjectSearcher(WmiQuery)
For Each info As ManagementObject In WmiSearcher.Get()
If cmbDevice.SelectedIndex = 4 Then
'// Get only USB interface type.
If info("InterfaceType") <> "USB" Then
For Each item As PropertyData In info.Properties()
Try
LV = lvwData.Items.Add("" & item.Name)
LV.SubItems.Add("" & item.Value)
Catch ex As Exception
End Try
Next
End If
Else
'// Get only USB interface type.
If info("InterfaceType") = "USB" Then
For Each item As PropertyData In info.Properties()
Try
LV = lvwData.Items.Add("" & item.Name)
LV.SubItems.Add("" & item.Value)
Catch ex As Exception
End Try
Next
End If
End If
Next
Catch err As ManagementException
MessageBox.Show("An error occurred while querying for WMI data: " & err.Message)
End Try
End Sub
Private Sub frmWMIInformation_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
Me.Dispose()
Application.Exit()
End Sub
End Class
ดาวน์โหลดโค้ดต้นฉบับ VB.NET (2010) ได้ที่นี่ ...
หน้า:
[1]