dcsimg
Login | Register   
RSS Feed
Download our iPhone app
TODAY'S HEADLINES  |   ARTICLE ARCHIVE  |   FORUMS  |   TIP BANK
Browse DevX
Sign up for e-mail newsletters from DevX

By submitting your information, you agree that devx.com may send you DevX offers via email, phone and text message, as well as email offers about other products and services that DevX believes may be of interest to you. DevX will process your information in accordance with the Quinstreet Privacy Policy.


Tip of the Day
Language: VB5,VB6
Expertise: Intermediate
Aug 26, 2000

WEBINAR:

On-Demand

Application Security Testing: An Integral Part of DevOps


GetMemberType - Check whether an object exposes a property, method, event

' Returns a bit-coded value that specifies the type of
' an object's member (property, method, event)
' or zero if the member isn't there

' Object is the object which you want to work
' MemberName is the property, method or event name
'
' the return value is one of the following
'   INVOKE_FUNC (method)
'   INVOKE_PROPERTYGET (property get)
'   INVOKE_PROPERTYPUT (property let)
'   INVOKE_PROPERTYPUTREF (property Set)
'   INVOKE_EVENTFUNC (event)
'   INVOKE_CONST (const)
'   256 is added to INVOKE_FUNC if the method is a function

' Be sure that "TypeLib Information" type library (TlbInf32.tlb)
' is referenced in your VB project.

Function GetMemberType(Object As Object, ByVal MemberName As String) As _
    InvokeKinds
    Dim TLI As New TLIApplication
    Dim Interface As InterfaceInfo
    Dim Member As MemberInfo
    
    ' get the default interface of the object
    ' any error is returned to the called
    Set Interface = TLI.InterfaceInfoFromObject(Object)
    
    ' from now on, errors just return 0
    On Error GoTo ErrorHandler
    
    ' search the property
    For Each Member In Interface.Members
        If StrComp(Member.Name, MemberName, vbTextCompare) = 0 Then
            ' add this bit to the result
            GetMemberType = GetMemberType Or Member.InvokeKind
            
            ' different behaviors, depending on member type
            Select Case Member.InvokeKind
                Case INVOKE_FUNC
                    ' it's a method - add 256 if it has a return value
                    If Member.ReturnType.VarType <> VT_VOID Then
                        GetMemberType = 256 Or INVOKE_FUNC
                    End If
                    ' nothing else to do
                    Exit For
                Case INVOKE_PROPERTYGET, INVOKE_PROPERTYPUT, _
                    INVOKE_PROPERTYPUTREF
                    ' it's a property - the result is bit coded
                    GetMemberType = GetMemberType Or Member.InvokeKind
                    ' we can't exit until all the members have been parsed
                Case Else
                    ' just return whatever value we found
                    GetMemberType = Member.InvokeKind
                    Exit For
            End Select
        End If
    Next
    
    Exit Function

ErrorHandler:
    ' an error occurred, return 0
    GetMemberType = 0
End Function

Alberto Falossi
 
Comment and Contribute

 

 

 

 

 


(Maximum characters: 1200). You have 1200 characters left.

 

 

Sitemap
Thanks for your registration, follow us on our social networks to keep up-to-date