-2

次の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
4

1 に答える 1

1

これで、作業中の VBScript コードを取得し、すべての変数を として宣言して VB6 に移植しましたObject。これで、移植したコードがエラーで失敗します。何が問題になる可能性がありますか?

関連する言語で使用されるデータ型について知ることは、それだけの価値があります。さいわい、VBScript のすべての変数はVariant. ドキュメントに従って:

VBScript には、Variant と呼ばれるデータ型が 1 つだけあります。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
于 2013-04-13T17:55:19.773 に答える