References.AddActiveX メソッド
ActiveX タイプ ライブラリへの参照を追加します。
名前空間: VSLangProj
アセンブリ: VSLangProj (vslangproj.dll 内)
構文
'宣言
'使用
パラメータ
- bstrTypeLibGuid
必ず指定します。タイプ ライブラリのグローバル一意識別子 (GUID) を示す文字列。
- lMajorVer
省略可能です。メジャー バージョン番号。省略すると、0 が使用されます。
- lMinorVer
省略可能です。マイナ バージョン番号。省略すると、0 が使用されます。
- lLocaleId
省略可能なロケール ID。詳細については、LocaleID を参照してください。
bstrWrapperTool
タイプ ライブラリのアセンブリ ラッパーを生成するときに使用されるラッパー ツール。サポートされている値を次の表に示します。値
結果
"tlbimp"
プロジェクト システムは、COM オブジェクトのメソッドおよびプロパティへのアクセスに適した汎用ラッパーを生成します。
"aximp"
プロジェクト システムは、Windows フォームで ActiveX のホストに使用するラッパーを生成します。
""
(空の文字列)プロジェクト システムは、指定したタイプ ライブラリの基本相互運用性アセンブリが存在するかどうかを確認します。存在する場合は、そのアセンブリを COM オブジェクトのメソッドおよびプロパティのラッパーとして使用します。存在しない場合は、
"tlbimp"
を指定した場合と同じ動作になります。
戻り値
要求された ActiveX ライブラリ オブジェクトの Reference オブジェクトを返します。
解説
AddActiveX メソッドは、指定したオブジェクトのプロジェクトへの参照と、そのオブジェクトの依存関係への参照を追加します。したがって、このメソッドを 1 回呼び出すことによって、References コレクションに複数の参照が追加される場合があります。
GUID の有効な形式は "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}" です。X には 16 進数の数字 (0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F) が代入されます。ActiveX オブジェクトの GUID を決定する 1 つの方法は、Visual Studio に付属の Oleview.exe ツールを使用して .ocx または .tlb ファイルを表示する方法です。
同じ ID の参照が既にコレクションに存在する場合は、エラーが発生します。
有効な COM オブジェクトを参照しているときに、"ライブラリが登録されていません。" というエラー メッセージが表示された場合、原因として、有効な lMajorVer パラメータ値を AddActiveX メソッドに渡していないことが考えられます。既定では、AddActiveX は、GUID 以外のすべてに対して値 0 を使用します。たとえば、COM オブジェクトのバージョンが 1 の場合、typelib のバージョン 0 は登録されていないため、呼び出しは失敗します。また、バージョン 1.0 の Windows メディア プレーヤーを呼び出した場合、
ref = refColl.AddActiveX("{22D6F304-B0F6-11D0-94AB-0080C74C7E95}")
では前述のエラーが発生しますが、
ref = refColl.AddActiveX("{22D6F304-B0F6-11D0-94AB-0080C74C7E95}", 1)
は正しく動作します。
このメソッドは、登録されているタイプ ライブラリだけを追加します。AddActiveX メソッドに指定された情報を引数として、オートメーション (以前のバージョンの OLE オートメーション) API 関数の QueryPathOfRegTypeLib が呼び出されます。
ActiveX オブジェクトのファイル名が明らかな場合は、Add を使用してオブジェクトを追加できます。Add メソッドには、GUID、バージョン、およびロケール ID は必要ありません。
参照を削除するには、Remove を使用します。
COM オブジェクトのラッパー、ActiveX のホスト、主な相互運用性アセンブリの詳細については、「タイプ ライブラリ インポータ (Tlbimp.exe)」および「Windows フォーム ActiveX コントロール インポータ (Aximp.exe)」を参照してください。
使用例
' 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