代码:
'引用TLBINF32.Dll
Option ExplicitPrivate Sub Form_Load()
   Dim oTLB As InterfaceInfo
    
   Dim i As Integer
   Dim j As Long
   Dim k As Long
   Dim sStr As String
   Dim Target As Object
   
   Dim Item As ListItem
   
   Set Target = ListView1
   
   ListView1.ColumnHeaders.Clear
   ListView1.ColumnHeaders.Add , , "EventName"
   ListView1.ColumnHeaders.Add , , "Parameters"
   ListView1.ListItems.Clear
   
   Set oTLB = TLI.InterfaceInfoFromObject(Target)
   '这一小段可以取到第三方控件的事件,但取不到VB内置的控件的事件
   For i = 2 To TLI.ClassInfoFromObject(Target).Interfaces.Count
        For j = 1 To TLI.ClassInfoFromObject(Target).Interfaces.Item(i).Members.Count
            Set Item = ListView1.ListItems.Add(, , TLI.ClassInfoFromObject(Target).Interfaces.Item(i).Members.Item(j).Name)
            sStr = ""
            For k = 1 To TLI.ClassInfoFromObject(Target).Interfaces.Item(i).Members.Item(j).Parameters.Count
                sStr = sStr & IIf(sStr = "", "", ",") & TLI.ClassInfoFromObject(Target).Interfaces.Item(i).Members.Item(j).Parameters.Item(k).Name
            Next k
            Item.SubItems(1) = sStr
'            Item.SubItems(2) = TLI.ClassInfoFromObject(Target).Interfaces.Item(i).Members.Item(j).ReturnType
        Next j
   Next iEnd Sub
我觉得第三方控件的事件应该是取对了,我验证了好多个。
但取不到VB内置控件和类模块中的事件。