Lập trình phần cứng trong VBA

Liên hệ QC

nvson

Geotechnics
Thành viên danh dự
Tham gia
20/9/06
Bài viết
793
Được thích
1,285
Nghề nghiệp
ĐCTV - ĐCCT
Xin hướng dẫn cách lấy các thông số phần cứng của máy tính bằng VBA:
+ Các thông số về Monitor properties như:
Monitor Name
Monitor ID
Serial Number
+Các thông số về Motherboard Properties:
Motherboard ID
Motherboard Name

Thanks!
 
Mình định trả lời nhưng thực tình .... chỉ định nói là tất cả mọi thứ đều có thể làm được nhờ Google hoặc vào những trang sourcecode của VB là có thể tìm kiếm được ngay (thậm chí có rất nhiều, rất rất nhiều code chuyên nghiệp) - ngay trên ổ cứng hiện thời của mình có khoảng ko ít hơn 20 chương trình fullcode về chuyện đó. Tuy nhiên mình thấy trả liên quan gì đến Excel lắm nên thôi ko post bài nữa.

From PhaTuHuong:
Mục đích của ngvson có phải là bảo mật không vậy?
 
hai2hai đã viết:
Mình định trả lời nhưng thực tình .... chỉ định nói là tất cả mọi thứ đều có thể làm được nhờ Google hoặc vào những trang sourcecode của VB là có thể tìm kiếm được ngay (thậm chí có rất nhiều, rất rất nhiều code chuyên nghiệp) - ngay trên ổ cứng hiện thời của mình có khoảng ko ít hơn 20 chương trình fullcode về chuyện đó. Tuy nhiên mình thấy trả liên quan gì đến Excel lắm nên thôi ko post bài nữa.

Dùng API bạn nhé

Ví dụ:

Private Declare Sub GetSystemInfo Lib "kernel32" (lpSystemInfo As SYSTEM_INFO)
Private Type SYSTEM_INFO
dwOemID As Long
dwPageSize As Long
lpMinimumApplicationAddress As Long
lpMaximumApplicationAddress As Long
dwActiveProcessorMask As Long
dwNumberOrfProcessors As Long
dwProcessorType As Long
dwAllocationGranularity As Long
dwReserved As Long
End Type

Private Sub Form_Load()
Dim SInfo As SYSTEM_INFO

'URL: http://www.chevietnam.com/
'URL: http://www.Geosoftvn.com/forums
'URL: http://www.thienminhco.com/

Me.AutoRedraw = True
'Get the system information
GetSystemInfo SInfo
'Print it to the form
Me.Print "Number of procesor:" + str$(SInfo.dwNumberOrfProcessors)
Me.Print "Processor:" + str$(SInfo.dwProcessorType)
Me.Print "Low memory address:" + str$(SInfo.lpMinimumApplicationAddress)
Me.Print "High memory address:" + str$(SInfo.lpMaximumApplicationAddress)
End Sub


Bạn hỏi chung nên tôi chỉ đưa ra một ví dụ chung chung
 
Lần chỉnh sửa cuối:
Thực ra thì tôi có sưu tầm được một đoạn mã VB (VBA cũng được tại sao không?)
'Motherboard serial number
Private Sub Form_Load()
Dim objs As Object
Dim
obj As Object
Dim
WMI As Object
Dim
sAns As String

Set
WMI = GetObject("WinMgmts:")
Set objs = WMI.InstancesOf("Win32_BaseBoard")
For Each obj In objs
sAns = sAns & obj.SerialNumber
If sAns < objs.Count Then sAns = sAns & ","
Next
MsgBox
"SerialNumber: " & sAns

sAns =""
For Each obj In objs
sAns = sAns & obj.SerialNumber
If sAns < objs.Count Then sAns = sAns & ","
Next
MsgBox
"Name: " & sAns

End Sub

Khi chạy chương trình (trên máy của tôi) cho kết quả là:

SerialNumber: 00000000,
Name: Base Board

Nhưng khi tôi chạy một phần mềm khác (cụ thể là Everest Home Edition version 2.01.351) cho kết quả:

Motherboard ID: 62-P320-001368-00101111-040201-INTEL$I45G320_P4I45GV BIOS P3.20
Motherboard Name: ASRock P4i45GV


Vậy:
- SerialNumber có phải là MotherboardID không?
- Name có phải là Motherboard Name không?
Mong các bác chỉ giúp!
(Tuy bài này không liên quan gì đến Excel nhưng trong mục "lập trình với Excel" nên tôi hỏi. Mong các bác thông cảm!)
Thanks!
 
WMI - Windows Management Instrumentation
bạn có thể tham khảo đối tuợng này tại đây
http://www.microsoft.com/whdc/system/pnppwr/wmi/default.mspx
xin nói trước là lỗi do ông này không nhận đúng phần cứng của bạn.
Nói chung dựa vào thư viện của Win thì không chuẩn xác lắm
Mỗi chương trình hay thư viện có quan niệm khác nhau về cái này (bản chất là địa chỉ luu giá trị này).
Không quan trọng, vấn đề là chương trình của bạn nhận và mã hoá, trả về giá như nhau là OK :) miễn là 2 máy <> thì <> :)

Tôi không thử nhưng cá vói bạn rằng vào regedit tìm chuổi
BIOS P3.20
I45G320_P4I45GV
P320-001368-00101111-040201
...
bạn sẽ thấy nó trong phần hardware của win lâu không nhớ nên ngại xem lại.
Bước tiếp theo với trình độ của bạn tôi nghĩ thừa sức lấy được giá trị này. Chúc thành công.
 
Web KT
Back
Top Bottom