devxlogo

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

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 FunctionErrorHandler:    ' an error occurred, return 0    GetMemberType = 0End Function

See also  Why ChatGPT Is So Important Today
devxblackblue

About Our Editorial Process

At DevX, we’re dedicated to tech entrepreneurship. Our team closely follows industry shifts, new products, AI breakthroughs, technology trends, and funding announcements. Articles undergo thorough editing to ensure accuracy and clarity, reflecting DevX’s style and supporting entrepreneurs in the tech sphere.

See our full editorial policy.

About Our Journalist