|
สำหรับโค้ดชุดนี้ก็จะเป็นการเรียกใช้งาน WMI (Windows Management Instrumenation) ซึ่งแอดมินได้เคยอธิบายไว้หลายครั้งแล้ว ขอสรุปให้ฟังอีกที คือการอ่านค่าคุณสมบัติทั้งฮาร์ดแวร์และซอฟท์แวร์ต่างๆบนระบบปฏิบัติการ Windows โดยบทความนี้เราจะอ่านค่าจากการเขียนด้วยโค้ด VB.NET สายงาน IT Support สามารถนำไปใช้งานในเรื่องของ Asset Inventory หรือการจัดเก็บข้อมูลวัสดุอุปกรณ์ ครุภัณฑ์ของสำนักงาน เป็นต้น ...
ต้องเรียกใช้งาน System Management (.NET) ...
หากต้องการส่งข้อมูลออกไปยัง Excel ต้องเรียกใช้ COM (Component Object Model) ...
ตัดให้เหลือเฉพาะ Reference ที่ต้องใช้งาน ...
มาดูโค้ดฉบับเต็มกันเถอะ ...
- Imports System.Management
- Imports Excel = Microsoft.Office.Interop.Excel
- Public Class frmListComputerPart
- Private Sub frmListComputerPart_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
- ' Initialize ListView Control
- With ListView1
- .View = View.Details
- .GridLines = True
- .FullRowSelect = True
- .HideSelection = False
- .MultiSelect = False
- .Columns.Add("Part name", ListView1.Width \ 2 - 50)
- .Columns.Add("Description", ListView1.Width \ 2 + 20)
- End With
- Dim LV As ListViewItem
- Dim i As Integer
- Dim strComputer As String = "."
- ' Processor
- Dim Searcher As New ManagementObjectSearcher( _
- "root\CIMV2", _
- "SELECT * FROM Win32_Processor")
- For Each QueryObj As ManagementObject In Searcher.Get()
- LV = ListView1.Items.Add("System Name")
- LV.SubItems.Add(QueryObj("SystemName"))
- LV = ListView1.Items.Add("CPU Name")
- LV.SubItems.Add(QueryObj("Name"))
- LV = ListView1.Items.Add("Processor ID")
- LV.SubItems.Add(QueryObj("ProcessorID"))
- Next
- ' BaseBoard
- Searcher = New ManagementObjectSearcher( _
- "root\CIMV2", _
- "SELECT * FROM Win32_BaseBoard")
- For Each QueryObj As ManagementObject In Searcher.Get()
- LV = ListView1.Items.Add("MainBoard Manufacturer")
- LV.SubItems.Add(QueryObj("Manufacturer"))
- LV = ListView1.Items.Add("MainBoard Serial Number")
- LV.SubItems.Add(QueryObj("SerialNumber"))
- LV = ListView1.Items.Add("MainBoard Product Name")
- LV.SubItems.Add(QueryObj("Product"))
- Next
- ' Hard Disk Drive use PhysicalMedia Class
- Searcher = New ManagementObjectSearcher( _
- "root\CIMV2",
- "SELECT * FROM Win32_PhysicalMedia")
- i = 1
- For Each QueryObj As ManagementObject In Searcher.Get()
- If InStr(QueryObj("Tag"), "CDROM") = 0 Then
- LV = ListView1.Items.Add("Hard Disk Serial Number (" & i & ")")
- LV.SubItems.Add(Trim(QueryObj("SerialNumber")))
- i = i + 1
- End If
- Next
- ' CD/DVD
- Searcher = New ManagementObjectSearcher( _
- "root\CIMV2",
- "SELECT * FROM Win32_CDROMDrive")
- i = 1
- For Each QueryObj As ManagementObject In Searcher.Get()
- LV = ListView1.Items.Add("CD/DVD Manufacturer (" & i & ")")
- LV.SubItems.Add(Trim(QueryObj("Name")))
- LV = ListView1.Items.Add("CD/DVD Serial Number (" & i & ")")
- LV.SubItems.Add(Trim(QueryObj("SerialNumber")))
- i = i + 1
- Next
- ' Memory
- Searcher = New ManagementObjectSearcher( _
- "root\CIMV2",
- "SELECT * FROM Win32_PhysicalMemory")
- i = 1
- For Each QueryObj As ManagementObject In Searcher.Get()
- LV = ListView1.Items.Add("Memory (" & i & ")")
- LV.SubItems.Add(Trim(QueryObj("Manufacturer")) & "/" & Trim(QueryObj("SerialNumber")))
- i = i + 1
- Next
- ' Network adapter
- Searcher = New ManagementObjectSearcher( _
- "root\CIMV2", _
- "SELECT * FROM Win32_NetworkAdapter")
- For Each QueryObj As ManagementObject In Searcher.Get()
- If Not String.IsNullOrEmpty(QueryObj("MACAddress")) And Microsoft.VisualBasic.Left(QueryObj("MACAddress"), 2) <> "00" Then
- LV = ListView1.Items.Add("MAC Address")
- LV.SubItems.Add(QueryObj("MACAddress"))
- LV = ListView1.Items.Add("Network Card Manufacturer")
- LV.SubItems.Add(QueryObj("Manufacturer"))
- LV = ListView1.Items.Add("Network Product Name")
- LV.SubItems.Add(QueryObj("ProductName"))
- End If
- Next
- End Sub
- '// Export to Excel.
- Private Sub btnExportExcel_Click(sender As System.Object, e As System.EventArgs) Handles btnExportExcel.Click
- Dim xlApp As Excel.Application = New Excel.Application
- Dim xlWorkBook As Excel.Workbook = xlApp.Workbooks.Add
- Dim xlWorkSheet As Excel.Worksheet = xlWorkBook.ActiveSheet
- ' Read data in ListView control and sending them to Excel Sheet.
- For i As Integer = 0 To ListView1.Items.Count - 1
- xlApp.Cells(i + 1, 1) = ListView1.Items(i).Text ' First column
- xlApp.Cells(i + 1, 2) = ListView1.Items(i).SubItems(1).Text ' Second column
- Next
- ' Adjust autofit columns
- xlWorkSheet.Columns.AutoFit()
- ' Open Excel
- xlApp.Visible = True
- End Sub
- Private Sub frmListComputerPart_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
- ' Resize ListView Control.
- If ListView1.Columns.Count > 0 Then
- With ListView1
- .Columns(0).Width = ListView1.Width \ 2 - 50
- .Columns(1).Width = ListView1.Width \ 2 + 20
- End With
- End If
- End Sub
- Private Sub frmListComputerPart_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
- Me.Dispose()
- GC.SuppressFinalize(Me)
- Application.Exit()
- End Sub
- End Class
คัดลอกไปที่คลิปบอร์ด
ดาวน์โหลดโค้ดฉบับเต็ม VB.NET (2010) ได้ที่นี่ ...
|
ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง
คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน
x
|