Collections 从HTML中嵌入的VBScript访问VB6集合项

Collections 从HTML中嵌入的VBScript访问VB6集合项,collections,vb6,vbscript,Collections,Vb6,Vbscript,我在实践中学习。我得到了一个OCX文件,根据谁给我的,它是用VB6创建的,我的任务是为它创建一个用户界面,以测试一个写得不好的文档文件中描述的所有功能。除此之外,我对VBScript不是很精通,但在学习的过程中我设法躲过了一些子弹 我有一个方法返回一个集合,当我尝试从VBScript访问它时,我只能查询计数,但当我尝试执行作业时。项(I)或作业(I)我收到一个错误,说明它没有该属性或方法 有人能给我指出正确的方向,让我能够浏览这个集合的内容吗 我不得不用JavaScript来做,但由于有些事情并

我在实践中学习。我得到了一个OCX文件,根据谁给我的,它是用VB6创建的,我的任务是为它创建一个用户界面,以测试一个写得不好的文档文件中描述的所有功能。除此之外,我对VBScript不是很精通,但在学习的过程中我设法躲过了一些子弹

我有一个方法返回一个
集合
,当我尝试从VBScript访问它时,我只能查询
计数
,但当我尝试执行
作业时。项(I)
作业(I)
我收到一个错误,说明它没有该属性或方法

有人能给我指出正确的方向,让我能够浏览这个集合的内容吗

我不得不用JavaScript来做,但由于有些事情并不那么容易,我决定也许VBScript可以帮助我弥补JavaScript没有解决的差距。我可以从JavaScript访问ActiveXObject的所有属性,但是返回其他VB对象的方法对我来说有点模糊。我尝试了
aJob.Item(iCount)
aJob.Items(iCount)
aJob.Item(iCount)

我的代码是:

For iCount = 1 To aJobs.Count
     MsgBox("Num " & iCount)
     MsgBox(aJobs.Item(iCount))
Next

谢谢。

人们经常在VB6中创建专门的和/或强类型的集合类。但是,它们并不总是正确地执行此操作,它们有时会创建没有Item()方法的“部分”集合实现(或者无法将其标记为类的默认成员)。它们甚至可能有一个类似的方法或属性,但名称却完全不同

返回原始集合对象是比较少见的,但它是可以完成的,如果是,则不应该出现VBScript中指出的问题

我刚刚创建了一个名为“HallLib”的DLL项目,其中包含三个类:Hallway、DoorKnobs和DoorKnob。DoorKnobs类是DoorKnobs对象的集合。Hallway类有一个DoorKnobs对象,它使用一组具有随机设置属性的DoorKnobs对象进行初始化。DoorKnobs()返回DoorKnobs集合对象作为其结果

它在这个脚本中运行良好:

Option Explicit

Dim Hallway, DoorKnobs, DoorKnob

Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()

MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)

For Each DoorKnob In DoorKnobs
    MsgBox "DoorKnob.Material = " & CStr(DoorKnob.Material) & vbNewLine _
         & "DoorKnob.Color = " & CStr(DoorKnob.Color)
Next
更新:

此脚本生成相同的结果:

Option Explicit

Dim Hallway, DoorKnobs, KnobIndex

Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()

MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)

For KnobIndex = 1 To DoorKnobs.Count
    With DoorKnobs.Item(KnobIndex)
        MsgBox "DoorKnob.Material = " & CStr(.Material) & vbNewLine _
             & "DoorKnob.Color = " & CStr(.Color)
    End With
Next
还有:

Option Explicit

Dim Hallway, DoorKnobs, KnobIndex

Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()

MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)

For KnobIndex = 1 To DoorKnobs.Count
    With DoorKnobs(KnobIndex)
        MsgBox "DoorKnob.Material = " & CStr(.Material) & vbNewLine _
             & "DoorKnob.Color = " & CStr(.Color)
    End With
Next

因此,我怀疑您需要使用一些类型库浏览器(如OLEView)来查看OCX,以了解它实际公开了哪些类和成员。

人们通常在VB6中创建专门的和/或强类型的集合类。但是,它们并不总是正确地执行此操作,它们有时会创建没有Item()方法的“部分”集合实现(或者无法将其标记为类的默认成员)。它们甚至可能有一个类似的方法或属性,但名称却完全不同

返回原始集合对象是比较少见的,但它是可以完成的,如果是,则不应该出现VBScript中指出的问题

我刚刚创建了一个名为“HallLib”的DLL项目,其中包含三个类:Hallway、DoorKnobs和DoorKnob。DoorKnobs类是DoorKnobs对象的集合。Hallway类有一个DoorKnobs对象,它使用一组具有随机设置属性的DoorKnobs对象进行初始化。DoorKnobs()返回DoorKnobs集合对象作为其结果

它在这个脚本中运行良好:

Option Explicit

Dim Hallway, DoorKnobs, DoorKnob

Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()

MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)

For Each DoorKnob In DoorKnobs
    MsgBox "DoorKnob.Material = " & CStr(DoorKnob.Material) & vbNewLine _
         & "DoorKnob.Color = " & CStr(DoorKnob.Color)
Next
更新:

此脚本生成相同的结果:

Option Explicit

Dim Hallway, DoorKnobs, KnobIndex

Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()

MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)

For KnobIndex = 1 To DoorKnobs.Count
    With DoorKnobs.Item(KnobIndex)
        MsgBox "DoorKnob.Material = " & CStr(.Material) & vbNewLine _
             & "DoorKnob.Color = " & CStr(.Color)
    End With
Next
还有:

Option Explicit

Dim Hallway, DoorKnobs, KnobIndex

Set Hallway = CreateObject("HallLib.Hallway")
Set DoorKnobs = Hallway.DoorKnobs()

MsgBox "DoorKnobs.Count = " & CStr(DoorKnobs.Count)

For KnobIndex = 1 To DoorKnobs.Count
    With DoorKnobs(KnobIndex)
        MsgBox "DoorKnob.Material = " & CStr(.Material) & vbNewLine _
             & "DoorKnob.Color = " & CStr(.Color)
    End With
Next

因此,我怀疑您需要使用一些类型库浏览器(如OLEView)来查看您的OCX,以了解它实际公开了哪些类和成员。

这是什么?(抱歉…)为什么VB6线程上会出现点网?(可能也很抱歉)这是什么?(抱歉…)为什么VB6线程上会出现点网?(可能也很抱歉)