[AccessD] CreateObject class names

Stuart McLachlan stuart at lexacorp.com.pg
Fri Oct 28 16:01:19 CDT 2022


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







More information about the AccessD mailing list