我正在使用以下vb6代码来检查计算机是否是台式机,笔记本电脑等。但代码无法正常运行并出现运行时错误。我在VB.net中做了相同的代码,它工作正常。当我在vb6中做到这一点我得到错误。我知道我错过了导致错误的东西。任何人都帮我解决错误?以下是vb6中的完整代码
Option Explicit
Private Sub Command1_Click()
Dim oWMI As Object
Dim oSystem As Object
Dim SQL As String
Dim objChassis As Object
Dim strChassisType As Object
Dim objWMIService As Object
Dim colChassis As Object
Dim strComputer As String
strComputer = "."
SQL = "Select * from Win32_SystemEnclosure"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colChassis = objWMIService.ExecQuery(SQL)
For Each objChassis In colChassis
For Each strChassisType In objChassis.ChassisTypes
Select Case strChassisType
Case 1
MsgBox ("Other")
Case 2
MsgBox ("Unknown")
Case 3
MsgBox ("Desktop")
Case 4
MsgBox ("Low Profile Desktop")
Case 5
MsgBox ("Pizza Box")
Case 6
MsgBox ("Mini Tower")
Case 7
MsgBox ("Tower")
Case 8
MsgBox ("Portable")
Case 9
MsgBox ("Laptop")
Case 10
MsgBox ("Notebook")
Case 11
MsgBox ("Handheld")
Case 12
MsgBox ("Docking Station")
Case 13
MsgBox ("All-in-One")
Case 14
MsgBox ("Sub-Notebook")
Case 15
MsgBox ("Space Saving")
Case 16
MsgBox ("Lunch Box")
Case 17
MsgBox ("Main System Chassis")
Case 18
MsgBox ("Expansion Chassis")
Case 19
MsgBox ("Sub-Chassis")
Case 20
MsgBox ("Bus Expansion Chassis")
Case 21
MsgBox ("Peripheral Chassis")
Case 22
MsgBox ("Storage Chassis")
Case 23
MsgBox ("Rack Mount Chassis")
Case 24
MsgBox ("Sealed-Case PC")
Case Else
MsgBox ("Unknown")
End Select
Next
Next
End Sub
答案 0 :(得分:1)
所以你已经使用working VBScript code,并通过将所有变量声明为Object
将其移植到VB6。现在您的移植代码失败并出现错误。可能出现什么问题?
了解所涉及语言使用的数据类型是值得的。幸运的是,VBScript中的所有变量都是Variant
。根据{{3}}:
VBScript只有一种名为Variant的数据类型。变体是一个 可以包含不同种类的特殊数据类型 信息,取决于它的使用方式。因为Variant是唯一的 VBScript中的数据类型,它也是所有人返回的数据类型 VBScript中的函数。
大多数情况下,您可以将所需的数据放在Variant中,而Variant的行为方式最适合其包含的数据。
幸运的是,VB6支持非常相同的Variant
数据类型。这就是为什么将变量声明为Variant
可以解决问题:
Dim oWMI
Dim oSystem
Dim SQL
Dim objChassis
Dim strChassisType
Dim objWMIService
Dim colChassis
Dim strComputer