ウィザードを使用した COM オブジェクトの実装
COM の基礎:インデックス への移動
Delphi では、COM サーバー アプリケーションを簡単に作成できるよう、ウィザードを提供して、そこで細かい必要な処理を行っています。 Delphi では、以下のそれぞれを作成する別個のウィザードを用意しています。
- 単純な COM オブジェクト
- オートメーション オブジェクト
- タイプ ライブラリ
- ActiveX ライブラリ
これらのウィザードは、それぞれの種類の COM オブジェクトを作成する際に必要な作業の多くを処理してくれます。オブジェクトの種類ごとに、必要な COM インターフェイスも提供しています。単純な COM オブジェクトの場合、ウィザードは、オブジェクトを指すインターフェイス ポインタとなる唯一の必須 COM インターフェイス IUnknown を実装します。
単純な COM オブジェクトのインターフェイス:
IDispatch の下位インターフェイスをサポートするオブジェクトを作成するよう指定すると、COM オブジェクト ウィザードで IDispatch の実装も作成されます。
オートメーション オブジェクトと Active Server オブジェクトの場合、ウィザードは、IUnknown の他に、自動マーシャリングを提供する IDispatch も実装します。
オートメーション オブジェクトのインターフェイス:
ActiveX コントロール オブジェクトと ActiveX フォームの場合、ウィザードは、IUnknown、IDispatch、IOleObject、IOleControl などの必要な ActiveX コントロール インターフェイスをすべて実装します。全インターフェイスのリストは、Vcl.AxCtrls.TActiveXControl オブジェクトのリファレンス ページを参照してください。
ActiveX オブジェクトのインターフェイス:
次の表は、さまざまなウィザードと、それによって実装されるインターフェイスとをまとめたものです。
COM オブジェクト、オートメーション オブジェクト、ActiveX オブジェクトを実装するための Delphi ウィザード:
ウィザード | 実装されるインターフェイス | ウィザードによる処理 |
---|---|---|
IUnknown(と、IDispatch の下位インターフェイスであるデフォルト インターフェイスを選択した場合には IDispatch) |
サーバーの登録、クラスの登録、サーバーの読み込みと読み込み解除、オブジェクトのインスタンス作成を行うルーチンをエクスポートします。 サーバー上で実装されたオブジェクトのクラス ファクトリを作成し管理します。 選択したスレッド モデルを指定するオブジェクトのレジストリ エントリを提供します。 選択したインターフェイスを実装するメソッドを宣言し、中身を埋めるだけで完成できる実装のスケルトンを提供します。 要求された場合にはタイプ ライブラリを提供します。タイプ ライブラリに登録された任意のインターフェイスを選択して実装できるようにします。この場合は、タイプ ライブラリを使用する必要があります。 | |
IUnknown、IDispatch |
COM サーバー ウィザードの処理(上記参照)に加えて、以下を実行します。 指定されたインターフェイス(デュアルまたはディスパッチ)を実装します。 要求があれば、サーバー側でイベント生成をサポートできるようにします。 タイプ ライブラリを自動的に提供します。 | |
(デフォルトでは)なし |
新しいタイプ ライブラリを作成し、アクティブなプロジェクトと関連付けます。 | |
ActiveX ライブラリ |
(デフォルトでは)なし |
新しい ActiveX または COM サーバーの DLL を作成し、必要なエクスポート関数を公開します。 |
COM オブジェクトを追加したり、既存の実装を再実装することもできます。新しいオブジェクトを追加するには、もう一度ウィザードを実行する方法が最も簡単です。これは、ウィザードによってタイプ ライブラリと実装クラスとが関連付けられるため、タイプ ライブラリ エディタで行った変更が実装オブジェクトに自動的に適用されるからです。