References::AddActiveX Method (String^, Int32, Int32, Int32, String^)
Adds a reference to an ActiveX type library.
Assembly: VSLangProj (in VSLangProj.dll)
Reference^ AddActiveX( String^ bstrTypeLibGuid, int lMajorVer = 0, int lMinorVer = 0, int lLocaleId = 0, String^ bstrWrapperTool = "" )
Parameters
- bstrTypeLibGuid
-
Type:
System::String^
Required. The type library's globally unique identifier (GUID), expressed as a string.
- lMajorVer
-
Type:
System::Int32
Optional. The major version number. If omitted, 0 is used.
- lMinorVer
-
Type:
System::Int32
Optional. The minor version number. If omitted, 0 is used.
- lLocaleId
-
Type:
System::Int32
Optional locale id. For more information, see LocaleID.
- bstrWrapperTool
-
Type:
System::String^
The wrapper tool to be used when generating an assembly wrapper for the type library. The supported values are described in the following table.
[1|1] Value
[1|2] Result
[2|1] "tlbimp"
[2|2] The project system generates a generic wrapper suitable for accessing the COM object's methods and properties.
[3|1] "aximp"
[3|2] The project system generates a wrapper that Windows forms uses for ActiveX hosting.
[4|1] "" (empty string)
[4|2] The project system checks if a primary interoperability assembly for the specified type library exists. If found, then that assembly is used as the wrapper for the COM object's methods and properties. If not found, the behavior is the same as if "tlbimp" were specified.
Return Value
Type: VSLangProj::Reference^Returns a Reference object for the requested ActiveX library object.
The AddActiveX method adds references to a project for the specified object and any dependencies listed by the object. Therefore, one call to this method may result in more than one reference being added to the References collection.
The valid format for a GUID is "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}", where X is a hexadecimal digit (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F). One method for determining the GUID for an ActiveX object is to view the .ocx or .tlb file using the Oleview.exe tool distributed with Visual Studio.
An error is generated if a reference with the same identity is already in the collection.
If you receive a "Library not registered" error when referencing a valid COM object, then it is likely due to the fact that you are not passing a valid lMajorVer parameter value to the AddActiveX method. By default, AddActiveX uses a value of 0 for everything but the GUID. If the version of the COM object is, for example, 1, the call will fail because there is no registered version 0 of the typelib. For example, when calling version 1.0 of the Windows Media player
ref = refColl.AddActiveX("{22D6F304-B0F6-11D0-94AB-0080C74C7E95}")
produces the aforementioned error, but
ref = refColl.AddActiveX("{22D6F304-B0F6-11D0-94AB-0080C74C7E95}", 1)
works correctly.
This method will add a registered type library only. A call is made to QueryPathOfRegTypeLib, an Automation (formerly OLE Automation) API function, passing the information supplied to the AddActiveX method.
If the file name of the ActiveX object is known, the object may be added by using the Add. The Add method does not require the GUID, version, or locale ID.
To remove a reference, use the Remove.
For more information on COM object wrappers, ActiveX hosting, and primary interoperability assemblies, see Tlbimp.exe (Type Library Importer) and Aximp.exe (Windows Forms ActiveX Control Importer).
' Macro Editor ' Add a reference to the ActiveX Data Objects Library, Version 2.5 Imports VSLangProj Public Sub AddARef() Try Dim proj As VSLangProj.VSProject = _ CType(DTE.Solution.Projects.Item(1).Object, _ VSLangProj.VSProject) ' GUID for ActiveX Data Objects, version 2.5 proj.References.AddActiveX( _ "{00000205-0000-0010-8000-00AA006D2EA4}", 2, 5) Catch ex As System.Exception MsgBox("Cannot add that reference.") End Try End Sub