Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb6 检查电脑是否为台式机或笔记本电脑等_Vb6_Wmi_Runtime Error - Fatal编程技术网

Vb6 检查电脑是否为台式机或笔记本电脑等

Vb6 检查电脑是否为台式机或笔记本电脑等,vb6,wmi,runtime-error,Vb6,Wmi,Runtime Error,我使用下面的vb6代码来检查计算机是否为台式机、笔记本电脑等,但该代码工作不正常,并给出运行时错误。我在VB.net中编写了相同的代码,效果很好。当我在vb6中编写代码时,我遇到了错误。我知道我缺少了导致错误的内容。有人能帮我解决错误吗?下面是vb6中的完整代码 Option Explicit Private Sub Command1_Click() Dim oWMI As Object Dim oSystem As Object Dim SQL As String Dim o

我使用下面的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
因此,您已经将所有变量声明为
Object
,并将其移植到VB6。现在,移植的代码失败并出现错误。会出什么问题

了解相关语言使用的数据类型是值得的。幸运的是,VBScript中的所有变量都是
Variant
。根据:

VBScript只有一种称为变量的数据类型。变体是 可以包含不同类型数据的特殊数据类型 信息,取决于其使用方式。因为变异是唯一的 VBScript中的数据类型,也是所有 VBScript中的函数

大多数情况下,您只需将所需的数据类型放入变量中,变量的行为方式最适合其包含的数据

更幸运的是,VB6支持完全相同的
变量
数据类型。这就是为什么将变量声明为
Variant
可以解决问题的原因:

  Dim oWMI
  Dim oSystem
  Dim SQL
  Dim objChassis
  Dim strChassisType
  Dim objWMIService
  Dim colChassis
  Dim strComputer

错误消息是什么?运行时错误424 object Required尝试使用变量数据类型而不是object。当我将所有objChassis、STRCHASSYPE、objWMIService和COLCASSIS声明为VariantIf时,问题得到解决。如果您要尝试使用令人讨厌的匈牙利符号,并使用类型前缀,请使您的类型前缀与变量类型匹配<代码>变暗STRCHASSYSTYPE作为对象