What you are asking for here can become a bit complicated since VB can't call the DOS and ROM-BIOS interrupts to retrieve the information from the "usual sources". Some of data can be pulled directly out of the first meg of RAM but this can be unreliable when distributing an app among a variety of machines (the useful information is machine-specific). To illustrate the point... here's some code that will display some interesting information on the BIOS, the chipset and the motherboard... but it will only work on machines running under an Award BIOS (it parses the Award BIOS ID String) and it probably won't work very well on Win NT and above (uses CopyMemory).
To try the code, place a label and a textbox on a form and set the index property to "0" on both. Copy and paste the code and press F5.[tt]
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (dest As _
Any, source As Any, ByVal bytes As Long)
Private Declare Function lstrlenA Lib "kernel32" (ByVal lpString As Long) As _
Long
Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As _
Long
Function StringFromAddr(ByVal address As Long, ByVal length As Long, _
Optional ByVal isUnicode As Boolean) As String
If length < 0 Then
If isUnicode Then
length = lstrlenW(address)
Else
length = lstrlenA(address)
End If
End If
StringFromAddr = Space$(length)
If isUnicode Then
CopyMemory ByVal StrPtr(StringFromAddr), ByVal address, length * 2
Else
CopyMemory ByVal StringFromAddr, ByVal address, length
End If
End Function
Madd = &HFEC60
Maddress = Abs(Madd)
mlngAddress = Maddress
Mlength = &H100
isUnicode = False
G$ = StringFromAddr(Maddress, Mlength, isUnicode)
StartByte = InStr(G$, "$" + 1
If StartByte < 1 Then
MsgBox "Not Award BIOS"
Exit Sub
End If
EndByte = InStr(StartByte, G$, Chr$(0)) - 1
BiosID$ = Mid$(G$, StartByte, EndByte - StartByte + 1)
Text1(0).Text = BiosID$
Bios = Split(BiosID$, "-"
If UBound(Bios) < 3 Then
MsgBox "Not Award BIOS"
Exit Sub
End If
Text1(1).Text = Bios(0)
If UBound(Bios) > 3 Then
Text1(2).Text = Bios(1) 'Chipset Mfg.
Text1(3).Text = Bios(2) 'Chipset
ChipsetPartNumber$ = Left$(Bios(3), 5)
MfgID$ = Mid$(Bios(3), 6, 2)
ModelNumber$ = Right$(Bios(3), 2)
Else
Text1(2).Text = "N/A" 'Chipset Mfg.
Text1(3).Text = Bios(1) 'Chipset
ChipsetPartNumber$ = Left$(Bios(2), 5)
MfgID$ = Mid$(Bios(2), 6, 2)
ModelNumber$ = Right$(Bios(2), 2)
End If
'Mainboard manufacturer ID
Select Case MfgID$
Case "99"
Mfg$ = "Unknown (beta release)"
Case "A0"
Mfg$ = "ASUSTek Computer, Inc."
Case "A1"
Mfg$ = "ABIT Computer Corp."
Case "A2"
Mfg$ = "A-Trend Technology Co., Ltd."
Case "A3"
Mfg$ = "BCom Electronics, Inc."
Case "A7"
Mfg$ = "AVT/Concord Office Automation Industrial Ltd."
Case "A8"
Mfg$ = "Adcom"
Case "AB"
Mfg$ = "AOpen, Inc."
Case "AD"
Mfg$ = "Amaquest Computer Corp."
Case "AK"
Mfg$ = "Advantech Co., Ltd."
Case "AM"
Mfg$ = "Achme"
Case "AT"
Mfg$ = "ASK Technology Ltd."
Case "AX"
Mfg$ = "Achitec Corporation Ltd."
Case "B0"
Mfg$ = "Biostar Microtech International Corp."
Case "B1"
Mfg$ = "BEK-Tronic Technology"
Case "B2"
Mfg$ = "Boser Technology Co., Ltd."
Case "B3"
Mfg$ = "BCM Advanced Research, Inc."
Case "C1"
Mfg$ = "Clevo Co."
Case "C2"
Mfg$ = "Chicony Electronics Co., Ltd."
Case "C3"
Mfg$ = "Chaintech Computer Co., Ltd."
Case "C5"
Mfg$ = "Chaplet Systems, Inc."
Case "C9"
Mfg$ = "CompuTrend Systems, Inc."
Case "CF"
Mfg$ = "Flagpoint"
Case "D0"
Mfg$ = "DataExpert Corp."
Case "D1"
Mfg$ = "DTK Computer, Inc."
Case "D2"
Mfg$ = "Digital (Equipment Corp.?)"
Case "D3"
Mfg$ = "American Digicom Corp."
Case "D4"
Mfg$ = "Diamond Flower, Inc. (DFI)"
Case "D7"
Mfg$ = "Daewoo Telecom"
Case "DE"
Mfg$ = "Dual Technology Corp."
Case "DI"
Mfg$ = "Domex Technology Corp. (DTC)"
Case "DJ"
Mfg$ = "Darter"
Case "DL"
Mfg$ = "Delta Electronics"
Case "E1"
Mfg$ = "Elitegroup Computer Systems Co., Ltd. (ECS)"
Case "E3"
Mfg$ = "EFA Corp."
Case "E4"
Mfg$ = "ESPCo Computer Ltd."
Case "E6"
Mfg$ = "Elonex"
Case "EC"
Mfg$ = "ENPC Technology Corp."
Case "F0"
Mfg$ = "First International Computer, Inc. (FIC)"
Case "F1"
Mfg$ = "Flytech Technology Co., Ltd."
Case "F2"
Mfg$ = "Flexus Computer (or Free Computer Technology, Inc.?)"
Case "F3"
Mfg$ = "Full Yes Industrial Corp."
Case "F5"
Mfg$ = "Fugu Tech Enterprise Co., Ltd."
Case "F8"
Mfg$ = "Formosa Industrial Computing"
Case "F9"
Mfg$ = "Ford Lian Co., Ltd."
Case "G0"
Mfg$ = "GigaByte Technology Co., Ltd."
Case "G1"
Mfg$ = "Git Co., Ltd. (?)"
Case "G3"
Mfg$ = "Gemlight Computer Ltd."
Case "G5"
Mfg$ = "GVC Corp. (or GVC Technology, Inc.?)"
Case "G9"
Mfg$ = "Global Circuit Technology, Inc."
Case "GA"
Mfg$ = "Giantec"
Case "GE"
Mfg$ = "Globe Legate Co., Ltd. (Zaapa)"
Case "H0"
Mfg$ = "Hsing-Tech Enterprise Co., Ltd."
Case "H2"
Mfg$ = "Holco Enterprise Co., Ltd. (Shuttle)"
Case "I3"
Mfg$ = "Iwill Corp."
Case "I4"
Mfg$ = "Inventa"
Case "I5"
Mfg$ = "Informtech"
Case "I9"
Mfg$ = "ICP-Acquire"
Case "IA"
Mfg$ = "Infinity"
Case "IC"
fg$ = "Inventec Corp."
Case "IE"
Mfg$ = "Itri"
Case "J1"
Mfg$ = "Jet Way Information Co., Ltd."
Case "J2"
Mfg$ = "Jamicon"
Case "J3"
Mfg$ = "J-Bond Computer Systems Corp."
Case "J4"
Mfg$ = "Jetta Computers Co., Ltd."
Case "J6"
Mfg$ = "Joss Technology Ltd."
Case "K0"
Mfg$ = "Kapok Computer Co."
Case "K1"
Mfg$ = "Kaimei Electronic Corp."
Case "KF"
Mfg$ = "Kinpo"
Case "L1"
Mfg$ = "Lucky Star Technology Co., Ltd."
Case "L7"
Mfg$ = "Lanner Electronics, Inc."
Case "L9"
Mfg$ = "Lucky Tiger"
Case "M0"
Mfg$ = "Matra"
Case "M2"
Mfg$ = "Taiwan Mycomp Co., Ltd. (and Megastar?)"
Case "M3"
Mfg$ = "Mitac Corp."
Case "M4"
Mfg$ = "Micro-Star International Co., Ltd."
Case "M8"
Mfg$ = "Mustek Corp."
Case "M9"
Mfg$ = "Micro Leader Enterprises Corp. (MLE)"
Case "MH"
Mfg$ = "Macrotek International Corp."
Case "N0"
Mfg$ = "Nexcom International Co., Ltd."
Case "N5"
Mfg$ = "NEC Corp."
Case "NM"
Mfg$ = "New Media Communication"
Case "NX"
Mfg$ = "Nexar"
Case "O0"
Mfg$ = "Ocean Office Automation Ltd. (Octek)"
Case "P1"
Mfg$ = "PCChips"
Case "P4"
Mfg$ = "ASUSTek Computer, Inc."
Case "P6"
Mfg$ = "Protech Systems Co., Ltd."
Case "P8"
Mfg$ = "Maxiland Technology, Inc. (Azza/Azzaboard)"
Case "P9"
Mfg$ = "Powetech Electronic Co., Ltd."
Case "PA"
Mfg$ = "EPoX Computer Co., Ltd (Pronix) or The Max International Ltd."
Case "PC"
Mfg$ = "Pine Technology Ltd."
Case "PN"
Mfg$ = "Procomp Informatics Ltd."
Case "PS"
Mfg$ = "Palmax"
Case "PX"
Mfg$ = "Pionix"
Case "Q0"
Mfg$ = "Quanta Computer, Inc."
Case "Q1"
Mfg$ = "Quantum Design, Inc. (QDI)"
Case "R0"
Mfg$ = "Rise Computer, Inc."
Case "R2"
Mfg$ = "Rectron Electronic Enterprises, Inc."
Case "S2"
Mfg$ = "Soyo Technology Co., Ltd."
Case "S3"
Mfg$ = "Smart D&M Technology Co., Ltd."
Case "S5"
Mfg$ = "Holco Enterprise Co., Ltd. (Shuttle)"
Case "S9"
Mfg$ = "Spring Circle Computer, Inc."
Case "SA"
Mfg$ = "Seanix"
Case "SC"
Mfg$ = "Suk Jung Electronic Co., Ltd."
Case "SE"
Mfg$ = "SMT Electronics Co., Ltd., or Newtech Korea Co., Ltd."
Case "SH"
Mfg$ = "Shing Yunn Technology Co., Ltd."
Case "SJ"
Mfg$ = "Sowah H.K. Ltd."
Case "SL"
Mfg$ = "Winco"
Case "SM"
Mfg$ = "San Li Technology Co., Ltd. or Superpower Computer Electronics Co., Ltd. or Hope Vision"
Case "SN"
Mfg$ = "Soltek (Anigo/Soltek)"
Case "T0"
Mfg$ = "Twinhead International Corp."
Case "T1"
Mfg$ = "Tarng Bow Co., Ltd. (?)"
Case "T4"
Mfg$ = "Taken Corp."
Case "T5"
Mfg$ = "Tyan Computer Corp."
Case "T6"
Mfg$ = "Trigen Computer, Inc."
Case "TG"
Mfg$ = "Tekram Technology Co., Ltd."
Case "TJ"
Mfg$ = "Totem"
Case "U0"
Mfg$ = "U-Board Computerize Ltd."
Case "U1"
Mfg$ = "Universal Scientific Industrial Co., Ltd."
Case "U2"
Mfg$ = "United Hitech Corp."
Case "U4"
Mfg$ = "Unicorn Computer Corp."
Case "U6"
Mfg$ = "Unitron, Inc."
Case "V3"
Mfg$ = "VTech Computers International Ltd."
Case "V5"
Mfg$ = "Vision Top Technology"
Case "V6"
Mfg$ = "Vobis"
Case "W0"
Mfg$ = "Win Technologies Co., Ltd. (Edom/Wintac)"
Case "W1"
Mfg$ = "Well Join Industry Co., Ltd."
Case "W5"
Mfg$ = "Winco Electronic Co., Ltd."
Case "W7"
Mfg$ = "Win Lan Enterprise Co., Ltd."
Case "X5"
Mfg$ = "Arima Computer Corp."
Case "Y2"
Mfg$ = "Yamashita Systems Corp."
Case "Z1"
Mfg$ = "Zida Technologies Ltd. (Tomato)"
Case Else
Mfg$ = MfgID$ & ": Unknown Manufaturer ID"
End Select
' Chipset Part Number
Select Case ChipsetPartNumber$
Case "2A431"
Chip$ = "Cyrix 5510 Media GX"
Case "2A4H2"
Chip$ = "Contaq 82C596-9"
Case "2A4IB"
Chip$ = "SiS 85C496/85C497"
Case "2A4KC"
Chip$ = "ALI M1439/M1445/M1431"
Case "2A4KD"
Chip$ = "ALI M1489"
Case "2A4L4"
Chip$ = "VIA VT82C486A/VT82C482/VT82C505"
Case "2A4L6"
Chip$ = "VIA VT82C496/VT82C406/VT82C505"
Case "2A4UK"
Chip$ = "OPTi 82C802G/82C822"
Case "2A4X5"
Chip$ = "UMC UM8881/UM8886"
Case "2A597"
Chip$ = "Intel Mercury"
Case "2A59A"
Chip$ = "Intel Neptune (Natoma)"
Case "2A59B"
Chip$ = "Intel Mercury"
Case "2A59C"
Chip$ = "Intel Triton FX"
Case "2A59F"
Chip$ = "Intel Triton II HX"
Case "2A59G"
Chip$ = "Intel Triton VX"
Case "2A59H"
Chip$ = "Intel Triton VX"
Case "2A59I"
Chip$ = "Intel Triton TX"
Case "2A5C7"
Chip$ = "VIA VT82C570"
Case "2A5G7"
Chip$ = "VLSI VL82C594"
Case "2A5GB"
Chip$ = "VLSI Lynx VL82C541/VL82C543"
Case "2A5IA"
Chip$ = "SiS 85C501/85C502/85C503"
Case "2A5IC"
Chip$ = "SiS 5501/5502/5503"
Case "2A5ID"
Chip$ = "SiS 5511/5512/5513"
Case "2A5IE"
Chip$ = "SiS 5101/5103"
Case "2A5IF"
Chip$ = "SiS 5596"
Case "2A5IH"
Chip$ = "SiS 5571"
Case "2A5II"
Chip$ = "SiS 5598"
Case "2A5IK"
Chip$ = "SiS 5591"
Case "2A5KB"
Chip$ = "ALI M1449/M1461/M1451"
Case "2A5KF"
Chip$ = "ALI M1521/M1523"
Case "2A5KI"
Chip$ = "ALI IV+ M1531/M1543"
Case "2A5L7"
Chip$ = "VIA VT82C570"
Case "2A5L9"
Chip$ = "VIA VT82C570M"
Case "2A5LA"
Chip$ = "VIA Apollo VP1 VT82C580P (VXPro)"
Case "2A5LC"
Chip$ = "VIA Apollo VP2 (AMD-640)"
Case "2A5LD"
Chip$ = "VIA VPX (VXPro+)"
Case "2A5LE"
Chip$ = "VIA Apollo (M) VP3"
Case "2A5R5"
Chip$ = "Forex 601A/613"
Case "2A5UI"
Chip$ = "OPTi 82C822/82C896/82C597"
Case "2A5UL"
Chip$ = "OPTi 82C822/82C571/82C572"
Case "2A5UM"
Chip$ = "OPTi 82C822/82C546/82C547"
Case "2A5UN"
Chip$ = "OPTi Viper(-M) 82C556/82C557/82C558"
Case "2A5X7"
Chip$ = "UMC UM82C890"
Case "2A5X8"
Chip$ = "UMC UM8886/UM8891/UM8892BF"
Case "2A69H"
Chip$ = "Intel 440FX"
Case "2A69J"
Chip$ = "Intel 440LX"
Case "2A69K"
Chip$ = "Intel 440BX"
Case "2B59A"
Chip$ = "Intel Neptune EISA"
Case "2C403"
Chip$ = "EFAR EC802G-B"
Case "2C4I8"
Chip$ = "SiS 85C471B/E"
Case "2C4I9"
Chip$ = "SiS 85C471B/E/G"
Case "2C4K9"
Chip$ = "ALI M1429"
Case "2C4L2"
Chip$ = "VIA VT82C486A"
Case "2C4L6"
Chip$ = "VIA VT82C496G"
Case "2C4UK"
Chip$ = "OPTi 82C802G"
Case "2C4X2"
Chip$ = "UMC UM82C491/UM82C493"
Case "2C4X6"
Chip$ = "UMC UM82C498F/UM82C496F"
Case Else
Chip$ = ChipsetPartNumber$ & ": Unknown Chipset Partnumber"
End Select
Text1(4).Text = Mfg$
Text1(5).Text = Chip$
Text1(6).Text = ModelNumber$
End Sub
[/tt]
That might have been more information than you were looking for but I hope you see my point. Even when you are able to retrieve certain information, you must find a way to interpret it. That's when your code becomes complicated, lengthy... or both.
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.