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 Next j Next iEnd Sub
或者查MSDN了
我说的是有一个Control对象 ctl
现在判断一下它有没有 enable属性,mousepointer属性……不是具体的一个控件
没别的办法么?
'浏览引用%System32%下的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
Next j
Next iEnd Sub