'需要引用TypeLib Information '一个按钮,一个listbox Private Sub Command1_Click() Dim TLIA As New TLIApplication Dim member As MemberInfo Dim mInterfaceInfo As InterfaceInfo Set mInterfaceInfo = TLIA.InterfaceInfoFromObject(Me) For Each member In mInterfaceInfo.Members If member.InvokeKind = INVOKE_PROPERTYGET Then List1.AddItem member.Name + "(可读)" ElseIf member.InvokeKind = INVOKE_PROPERTYPUT Then List1.AddItem member.Name + "(可写)" ElseIf member.InvokeKind = INVOKE_FUNC Then List1.AddItem member.Name + "(函数)" ElseIf member.InvokeKind = INVOKE_PROPERTYPUTREF Then List1.AddItem member.Name + "(对象)" ElseIf member.InvokeKind = INVOKE_EVENTFUNC Then List1.AddItem member.Name + "(事件)" Else List1.AddItem member.Name + ":" + CStr(member.InvokeKind) End If Next Set member = Nothing Set mInterfaceInfo = Nothing Set TLIA = NothingEnd Sub
'在工程〉引用里选中 TypeLib InformationPrivate Sub Form_Load() On Error Resume Next Dim ctl As Object For Each ctl In Me.Controls Dim iInf As InterfaceInfo Set iInf = InterfaceInfoFromObject(ctl) If Not (iInf Is Nothing) Then Dim mem As MemberInfo For Each mem In iInf.Members If mem.InvokeKind And INVOKE_PROPERTYGET Then Debug.Print ctl.Name, mem.Name, _ "= " & CallByName(ctl, mem.Name, VbGet) End If Next End If Next End Sub
'一个按钮,一个listbox
Private Sub Command1_Click()
Dim TLIA As New TLIApplication
Dim member As MemberInfo
Dim mInterfaceInfo As InterfaceInfo
Set mInterfaceInfo = TLIA.InterfaceInfoFromObject(Me)
For Each member In mInterfaceInfo.Members
If member.InvokeKind = INVOKE_PROPERTYGET Then
List1.AddItem member.Name + "(可读)"
ElseIf member.InvokeKind = INVOKE_PROPERTYPUT Then
List1.AddItem member.Name + "(可写)"
ElseIf member.InvokeKind = INVOKE_FUNC Then
List1.AddItem member.Name + "(函数)"
ElseIf member.InvokeKind = INVOKE_PROPERTYPUTREF Then
List1.AddItem member.Name + "(对象)"
ElseIf member.InvokeKind = INVOKE_EVENTFUNC Then
List1.AddItem member.Name + "(事件)"
Else
List1.AddItem member.Name + ":" + CStr(member.InvokeKind)
End If
Next
Set member = Nothing
Set mInterfaceInfo = Nothing
Set TLIA = NothingEnd Sub
On Error Resume Next
Dim ctl As Object
For Each ctl In Me.Controls
Dim iInf As InterfaceInfo
Set iInf = InterfaceInfoFromObject(ctl)
If Not (iInf Is Nothing) Then
Dim mem As MemberInfo
For Each mem In iInf.Members
If mem.InvokeKind And INVOKE_PROPERTYGET Then
Debug.Print ctl.Name, mem.Name, _
"= " & CallByName(ctl, mem.Name, VbGet)
End If
Next
End If
Next
End Sub