[AccessD] CreateObject class names

Arthur Fuller fuller.artful at gmail.com
Fri Oct 28 23:23:09 CDT 2022


Why not just avoid all this by naming all your classes with a prefix or
suffix? i.e. MyClass_JWC, or MyClass_SM? Chances are really good that there
would be no collisions with those names.

On Fri, Oct 28, 2022 at 5:01 PM Stuart McLachlan <stuart at lexacorp.com.pg>
wrote:

> On 28 Oct 2022 at 10:26, Ryan W wrote:
>
> > Aside from Google, is there some way to find the class names when
> > using CreateObject.
> >
> > eg:
> >
> > dim re as Object
> > set re = CreateObect("vbscript.regexp") <-- found via google
> >
>
> There is a potentially infinite number of class names.
>
> If you mean "find the class names of COM libraries that are registered on
> your PC", then
> there are tools available.
>
> Tools-References lists the registered libraries on you PC including
> "Microsoft VBScript
> Regular Expressions 5.5"
>
> If you want to use CreateObject() rather than just ticking that reference,
> then you could
> search the registry for the Descriptive name
>
> You will find it under a GUID
> HKCR\TypeLib\{3F4DACA7-160D-11D2-A8E9-00104B365C9F}\5.5
>
> Then search HKCR\CLID for that GUID and look at the ProgID sub-key..
> [HKEY_CLASSES_ROOT\CLSID\{3F4DACA4-160D-11D2-A8E9-00104B365C9F}\ProgID]
> ="VBScript.RegExp"
>
> I've got a tool that locates all registered 32 Bit libraries. It creates
> appropriate incl files for
> PowerBASIC. (Where there are 32 bit and 64 bit versions of the type
> libraries, generally the
> only difference is the location of the file (System32 or SysWow64)
>
> Here's the one for RegExpr The relevant line you are asking for is:
> ' Version Dependent ProgIDs
> $PROGID_VBScript_RegExp_55_RegExpRegExp = "VBScript.RegExp"
>
> Note that it also lists the properties and methods of the object
>
> ' Generated by: PowerBASIC COM Browser v.2.00.0086
> ' Date & Time : 29/10/2022 at 6:41 AM
> ' Options:
> ' Always use an Interface Prefix : Off
> ' Interface Prefix               : Int_
> ' Prefix ProgIDs, ClassIDs...    : On
> ' Use ANSI Strings               : Off
> ' Use Singular Enumerations      : Off
> ' Generate Dispatch Interfaces   : Off
> ' Include Parameter Names        : On
> ' Use Property Get/Set statements: On
> ' ------------------------------------------------
> ' Library Name: VBScript_RegExp_55
> ' Library File: C:\Windows\SysWOW64\vbscript.dll\3
> ' Description : Microsoft VBScript Regular Expressions 5.5
> ' GUID : {3F4DACA7-160D-11D2-A8E9-00104B365C9F}
> ' LCID : 0
> ' Version : 5.5
>
> ' Version Dependent ProgIDs
> $PROGID_VBScript_RegExp_55_RegExpRegExp = "VBScript.RegExp"
>
> ' Class Identifiers
> $CLSID_VBScript_RegExp_55_RegExp =
> GUID$("{3F4DACA4-160D-11D2-A8E9-00104B365C9F}")
> $CLSID_VBScript_RegExp_55_Match =
> GUID$("{3F4DACA5-160D-11D2-A8E9-00104B365C9F}")
> $CLSID_VBScript_RegExp_55_MatchCollection =
> GUID$("{3F4DACA6-160D-11D2-A8E9-00104B365C9F}")
> $CLSID_VBScript_RegExp_55_SubMatches =
> GUID$("{3F4DACC0-160D-11D2-A8E9-00104B365C9F}")
>
> ' Interface Identifiers
> $IID_VBScript_RegExp_55_IRegExp =
> GUID$("{3F4DACA0-160D-11D2-A8E9-00104B365C9F}")
> $IID_VBScript_RegExp_55_IMatch =
> GUID$("{3F4DACA1-160D-11D2-A8E9-00104B365C9F}")
> $IID_VBScript_RegExp_55_IMatchCollection =
> GUID$("{3F4DACA2-160D-11D2-A8E9-00104B365C9F}")
> $IID_VBScript_RegExp_55_IRegExp2 =
> GUID$("{3F4DACB0-160D-11D2-A8E9-00104B365C9F}")
> $IID_VBScript_RegExp_55_IMatch2 =
> GUID$("{3F4DACB1-160D-11D2-A8E9-00104B365C9F}")
> $IID_VBScript_RegExp_55_IMatchCollection2 =
> GUID$("{3F4DACB2-160D-11D2-A8E9-00104B365C9F}")
> $IID_VBScript_RegExp_55_ISubMatches =
> GUID$("{3F4DACB3-160D-11D2-A8E9-00104B365C9F}")
>
> ' Interface Name  : IRegExp
> ' This Interface cannot be created directly it can only
> ' be returned by a Method or Property in this library.
> Interface IRegExp $IID_VBScript_RegExp_55_IRegExp
>     Inherit IDispatch
>
>     Property Get Pattern <10001> () As WString
>     Property Set Pattern <10001> (ByVal pPattern As WString)
>     Property Get IgnoreCase <10002> () As Integer
>     Property Set IgnoreCase <10002> (ByVal pIgnoreCase As Integer)
>     Property Get Global <10003> () As Integer
>     Property Set Global <10003> (ByVal pGlobal As Integer)
>     Method Execute <10004> (Byval sourceString As WString) As IDispatch
>     Method Test <10005> (Byval sourceString As WString) As Integer
>     Method Replace <10006> (Byval sourceString As WString, Byval
> replaceString As
> WString) As WString
> End Interface
>
> ' Interface Name  : IMatch
> ' This Interface cannot be created directly it can only
> ' be returned by a Method or Property in this library.
> Interface IMatch $IID_VBScript_RegExp_55_IMatch
>     Inherit IDispatch
>
>     Property Get Value <0> () As WString
>     Property Get FirstIndex <10001> () As Long
>     Property Get Length <10002> () As Long
> End Interface
>
> ' Interface Name  : IMatchCollection
> ' This Interface cannot be created directly it can only
> ' be returned by a Method or Property in this library.
> Interface IMatchCollection $IID_VBScript_RegExp_55_IMatchCollection
>     Inherit IDispatch
>
>     Property Get Item <10001> (ByVal index As Long) As IDispatch
>     Property Get Count <1> () As Long
>     Property Get PropGet__NewEnum <-4> () As IUnknown
> End Interface
>
> ' Interface Name  : IRegExp2
> ' Class Name      : RegExp
> ' ClassID         : $CLSID_VBScript_RegExp_55_RegExp
> ' Version ProgID  : $PROGID_VBScript_RegExp_55_RegExpRegExp
> Interface IRegExp2 $IID_VBScript_RegExp_55_IRegExp2
>     Inherit IDispatch
>
>     Property Get Pattern <10001> () As WString
>     Property Set Pattern <10001> (ByVal pPattern As WString)
>     Property Get IgnoreCase <10002> () As Integer
>     Property Set IgnoreCase <10002> (ByVal pIgnoreCase As Integer)
>     Property Get Global <10003> () As Integer
>     Property Set Global <10003> (ByVal pGlobal As Integer)
>     Property Get Multiline <10007> () As Integer
>     Property Set Multiline <10007> (ByVal pMultiline As Integer)
>     Method Execute <10004> (Byval sourceString As WString) As IDispatch
>     Method Test <10005> (Byval sourceString As WString) As Integer
>     Method Replace <10006> (Byval sourceString As WString, Byval
> replaceVar As Variant)
> As WString
> End Interface
>
> ' Interface Name  : IMatch2
> ' Class Name      : Match
> ' ClassID         : $CLSID_VBScript_RegExp_55_Match
> ' This Interface cannot be created directly it can only
> ' be returned by a Method or Property in this library.
> Interface IMatch2 $IID_VBScript_RegExp_55_IMatch2
>     Inherit IDispatch
>
>     Property Get Value <0> () As WString
>     Property Get FirstIndex <10001> () As Long
>     Property Get Length <10002> () As Long
>     Property Get SubMatches <10003> () As IDispatch
> End Interface
>
> ' Interface Name  : IMatchCollection2
> ' Class Name      : MatchCollection
> ' ClassID         : $CLSID_VBScript_RegExp_55_MatchCollection
> ' This Interface cannot be created directly it can only
> ' be returned by a Method or Property in this library.
> Interface IMatchCollection2 $IID_VBScript_RegExp_55_IMatchCollection2
>     Inherit IDispatch
>
>     Property Get Item <0> (ByVal index As Long) As IDispatch
>     Property Get Count <1> () As Long
>     Property Get PropGet__NewEnum <-4> () As IUnknown
> End Interface
>
> ' Interface Name  : ISubMatches
> ' Class Name      : SubMatches
> ' ClassID         : $CLSID_VBScript_RegExp_55_SubMatches
> ' This Interface cannot be created directly it can only
> ' be returned by a Method or Property in this library.
> Interface ISubMatches $IID_VBScript_RegExp_55_ISubMatches
>     Inherit IDispatch
>
>     Property Get Item <0> (ByVal index As Long) As Variant
>     Property Get Count <1> () As Long
>     Property Get PropGet__NewEnum <-4> () As IUnknown
> End Interface
>
>
>
>
>
> --
> AccessD mailing list
> AccessD at databaseadvisors.com
> https://databaseadvisors.com/mailman/listinfo/accessd
> Website: http://www.databaseadvisors.com
>


-- 
Arthur


More information about the AccessD mailing list