ชุมชนคนรักภาษาเบสิค - Visual Basic Community

 ลืมรหัสผ่าน
 ลงทะเบียน
ค้นหา
ดู: 2961|ตอบกลับ: 1

[VB.NET] แสดงรายละเอียดชิ้นส่วนของคอมพิวเตอร์ด้วย WMI

[คัดลอกลิงก์]

310

กระทู้

501

โพสต์

6035

เครดิต

ผู้ดูแลระบบ

ทองก้อน ทับทิมกรอบ

Rank: 9Rank: 9Rank: 9

เครดิต
6035



สำหรับโค้ดชุดนี้ก็จะเป็นการเรียกใช้งาน WMI (Windows Management Instrumenation) ซึ่งแอดมินได้เคยอธิบายไว้หลายครั้งแล้ว ขอสรุปให้ฟังอีกที คือการอ่านค่าคุณสมบัติทั้งฮาร์ดแวร์และซอฟท์แวร์ต่างๆบนระบบปฏิบัติการ Windows โดยบทความนี้เราจะอ่านค่าจากการเขียนด้วยโค้ด VB.NET สายงาน IT Support สามารถนำไปใช้งานในเรื่องของ Asset Inventory หรือการจัดเก็บข้อมูลวัสดุอุปกรณ์ ครุภัณฑ์ของสำนักงาน เป็นต้น ...

ต้องเรียกใช้งาน System Management (.NET) ...


หากต้องการส่งข้อมูลออกไปยัง Excel ต้องเรียกใช้ COM (Component Object Model) ...


ตัดให้เหลือเฉพาะ Reference ที่ต้องใช้งาน ...


มาดูโค้ดฉบับเต็มกันเถอะ ...
  1. Imports System.Management
  2. Imports Excel = Microsoft.Office.Interop.Excel

  3. Public Class frmListComputerPart

  4.     Private Sub frmListComputerPart_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
  5.         ' Initialize ListView Control
  6.         With ListView1
  7.             .View = View.Details
  8.             .GridLines = True
  9.             .FullRowSelect = True
  10.             .HideSelection = False
  11.             .MultiSelect = False
  12.             .Columns.Add("Part name", ListView1.Width \ 2 - 50)
  13.             .Columns.Add("Description", ListView1.Width \ 2 + 20)
  14.         End With
  15.         Dim LV As ListViewItem
  16.         Dim i As Integer
  17.         Dim strComputer As String = "."
  18.         ' Processor
  19.         Dim Searcher As New ManagementObjectSearcher( _
  20.                             "root\CIMV2", _
  21.                             "SELECT * FROM Win32_Processor")
  22.         For Each QueryObj As ManagementObject In Searcher.Get()
  23.             LV = ListView1.Items.Add("System Name")
  24.             LV.SubItems.Add(QueryObj("SystemName"))
  25.             LV = ListView1.Items.Add("CPU Name")
  26.             LV.SubItems.Add(QueryObj("Name"))
  27.             LV = ListView1.Items.Add("Processor ID")
  28.             LV.SubItems.Add(QueryObj("ProcessorID"))
  29.         Next
  30.         ' BaseBoard
  31.         Searcher = New ManagementObjectSearcher( _
  32.                             "root\CIMV2", _
  33.                             "SELECT * FROM Win32_BaseBoard")
  34.         For Each QueryObj As ManagementObject In Searcher.Get()
  35.             LV = ListView1.Items.Add("MainBoard Manufacturer")
  36.             LV.SubItems.Add(QueryObj("Manufacturer"))
  37.             LV = ListView1.Items.Add("MainBoard Serial Number")
  38.             LV.SubItems.Add(QueryObj("SerialNumber"))
  39.             LV = ListView1.Items.Add("MainBoard Product Name")
  40.             LV.SubItems.Add(QueryObj("Product"))
  41.         Next
  42.         ' Hard Disk Drive use PhysicalMedia Class
  43.         Searcher = New ManagementObjectSearcher( _
  44.                             "root\CIMV2",
  45.                             "SELECT * FROM Win32_PhysicalMedia")
  46.         i = 1
  47.         For Each QueryObj As ManagementObject In Searcher.Get()
  48.             If InStr(QueryObj("Tag"), "CDROM") = 0 Then
  49.                 LV = ListView1.Items.Add("Hard Disk Serial Number (" & i & ")")
  50.                 LV.SubItems.Add(Trim(QueryObj("SerialNumber")))
  51.                 i = i + 1
  52.             End If
  53.         Next
  54.         ' CD/DVD
  55.         Searcher = New ManagementObjectSearcher( _
  56.                             "root\CIMV2",
  57.                             "SELECT * FROM Win32_CDROMDrive")
  58.         i = 1
  59.         For Each QueryObj As ManagementObject In Searcher.Get()
  60.             LV = ListView1.Items.Add("CD/DVD Manufacturer (" & i & ")")
  61.             LV.SubItems.Add(Trim(QueryObj("Name")))
  62.             LV = ListView1.Items.Add("CD/DVD Serial Number (" & i & ")")
  63.             LV.SubItems.Add(Trim(QueryObj("SerialNumber")))
  64.             i = i + 1
  65.         Next
  66.         ' Memory
  67.         Searcher = New ManagementObjectSearcher( _
  68.                             "root\CIMV2",
  69.                             "SELECT * FROM Win32_PhysicalMemory")
  70.         i = 1
  71.         For Each QueryObj As ManagementObject In Searcher.Get()
  72.             LV = ListView1.Items.Add("Memory (" & i & ")")
  73.             LV.SubItems.Add(Trim(QueryObj("Manufacturer")) & "/" & Trim(QueryObj("SerialNumber")))
  74.             i = i + 1
  75.         Next
  76.         ' Network adapter
  77.         Searcher = New ManagementObjectSearcher( _
  78.                             "root\CIMV2", _
  79.                             "SELECT * FROM Win32_NetworkAdapter")
  80.         For Each QueryObj As ManagementObject In Searcher.Get()
  81.             If Not String.IsNullOrEmpty(QueryObj("MACAddress")) And Microsoft.VisualBasic.Left(QueryObj("MACAddress"), 2) <> "00" Then
  82.                 LV = ListView1.Items.Add("MAC Address")
  83.                 LV.SubItems.Add(QueryObj("MACAddress"))
  84.                 LV = ListView1.Items.Add("Network Card Manufacturer")
  85.                 LV.SubItems.Add(QueryObj("Manufacturer"))
  86.                 LV = ListView1.Items.Add("Network Product Name")
  87.                 LV.SubItems.Add(QueryObj("ProductName"))
  88.             End If
  89.         Next
  90.     End Sub

  91.     '// Export to Excel.
  92.     Private Sub btnExportExcel_Click(sender As System.Object, e As System.EventArgs) Handles btnExportExcel.Click
  93.         Dim xlApp As Excel.Application = New Excel.Application
  94.         Dim xlWorkBook As Excel.Workbook = xlApp.Workbooks.Add
  95.         Dim xlWorkSheet As Excel.Worksheet = xlWorkBook.ActiveSheet
  96.         ' Read data in ListView control and sending them to Excel Sheet.
  97.         For i As Integer = 0 To ListView1.Items.Count - 1
  98.             xlApp.Cells(i + 1, 1) = ListView1.Items(i).Text     ' First column
  99.             xlApp.Cells(i + 1, 2) = ListView1.Items(i).SubItems(1).Text ' Second column
  100.         Next
  101.         ' Adjust autofit columns
  102.         xlWorkSheet.Columns.AutoFit()
  103.         ' Open Excel
  104.         xlApp.Visible = True
  105.     End Sub

  106.     Private Sub frmListComputerPart_Resize(sender As Object, e As System.EventArgs) Handles Me.Resize
  107.         ' Resize ListView Control.
  108.         If ListView1.Columns.Count > 0 Then
  109.             With ListView1
  110.                 .Columns(0).Width = ListView1.Width \ 2 - 50
  111.                 .Columns(1).Width = ListView1.Width \ 2 + 20
  112.             End With
  113.         End If
  114.     End Sub

  115.     Private Sub frmListComputerPart_FormClosed(sender As Object, e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  116.         Me.Dispose()
  117.         GC.SuppressFinalize(Me)
  118.         Application.Exit()
  119.     End Sub

  120. End Class
คัดลอกไปที่คลิปบอร์ด

ดาวน์โหลดโค้ดฉบับเต็ม VB.NET (2010) ได้ที่นี่ ...

ขออภัย! โพสต์นี้มีไฟล์แนบหรือรูปภาพที่ไม่ได้รับอนุญาตให้คุณเข้าถึง

คุณจำเป็นต้อง ลงชื่อเข้าใช้ เพื่อดาวน์โหลดหรือดูไฟล์แนบนี้ คุณยังไม่มีบัญชีใช่ไหม? ลงทะเบียน

x
สิ่งที่ดีกว่าการให้ คือการให้แบบไม่มีที่สิ้นสุด

0

กระทู้

58

โพสต์

10

เครดิต

Member

Rank: 2

เครดิต
10
โพสต์ 2022-10-25 15:16:08 | ดูโพสต์ทั้งหมด

ขอบคุณครับ
ขออภัย! คุณไม่ได้รับสิทธิ์ในการดำเนินการในส่วนนี้ กรุณาเลือกอย่างใดอย่างหนึ่ง ลงชื่อเข้าใช้ | ลงทะเบียน

รายละเอียดเครดิต

ข้อความล้วน|อุปกรณ์พกพา|ประวัติการแบน|G2GNet.com  

GMT+7, 2024-4-20 15:02 , Processed in 0.228816 second(s), 4 queries , File On.

Powered by Discuz! X3.4, Rev.62

Copyright © 2001-2020 Tencent Cloud.

ตอบกระทู้ ขึ้นไปด้านบน ไปที่หน้ารายการกระทู้