COM オブジェクト ウィザードの利用

提供: RAD Studio
移動先: 案内検索

単純な COM サーバーの作成:インデックス への移動

[COM オブジェクト ウィザード]では次のタスクを実行します。

  • 新しいユニットを作成する。
  • TCOMObject から派生する新しいクラスを定義し、クラス ファクトリ コンストラクタを設定する。基底クラスの詳細については、「ウィザードで生成されたコード」を参照してください。
  • ユーザーのプロジェクトにタイプ ライブラリを追加し、ユーザーのオブジェクトとそのインターフェイスをタイプ ライブラリに追加します。
  • タイプ ライブラリ エディタでタイプ ライブラリを開きます。

COM オブジェクトを作成する前に、実装する機能を含むアプリケーションのプロジェクトを作成するか開きます。ニーズに応じて、アプリケーションと ActiveX ライブラリのどちらかをプロジェクトにすることができます。

[COM オブジェクト ウィザード] を起動するには:

  1. ファイル > 新規作成 > その他... を選択し、[新規作成] ダイアログ ボックスを開きます。
  2. ActiveX フォルダを Delphi プロジェクト から選択します。
  3. 右ペインで COM オブジェクト アイコンをダブルクリックします。

ウィザードで、次の事項を指定する必要があります。

  • CoClass 名: これはクライアントに表示されるとおりのオブジェクト名です。ユーザーのオブジェクトを実装するために生成されたクラスは、これと同じ名前で先頭に 'T' が付きます。既存のインターフェイスを実装することを選択しない場合は、ウィザードによりユーザーの CoClass にこの名前の先頭に 'I' が付いたデフォルト インターフェイスが指定されます。
  • インスタンス生成: インプロセス サーバーを作成している場合を除き、ユーザーの COM オブジェクトをホストするアプリケーションを COM により起動する方法を指定する必要があります。ユーザーのアプリケーションに複数の COM オブジェクトが実装されている場合は、すべてのオブジェクトで同じインスタンス化を指定する必要があります。
  • スレッド モデル: 一般に、ユーザーのオブジェクトへのクライアント要求は、異なる実行スレッドに入ります。ユーザーのオブジェクトを呼び出したときに各スレッドを COM がシリアル化する方法を指定できます。選択したスレッドモデルによって、オブジェクトの登録方法が決まります。選択したモデルで示されるスレッド サポートを用意する責任があります。ユーザーのアプリケーションをサポートするスレッドを用意する方法の詳細については、「マルチスレッド アプリケーションの作成」を参照してください。
  • インターフェイス: ウィザードでは、ユーザーのオブジェクトに IUnknown から派生したデフォルト インターフェイスが指定されます。デフォルトでは、ウィザードにより、ユーザーのインターフェイスに CoClass と同じ名前の先頭にインターフェイスを示す "I" が付いた名前が指定されます。ウィザードが終了した後に、タイプ ライブラリ エディタで、プロパティとメソッドをこのインターフェイスに追加できます。ユーザーのオブジェクトに実装する事前定義のインターフェイスを選択することもできます。[COM オブジェクト ウィザード] で [...] をクリックして、インターフェイスの選択ウィザードを起動します。ここでユーザーのシステムに登録されたタイプ ライブラリで定義された任意のデュアルまたはカスタム インターフェイスを選択できます。選択したインターフェイスは新しい CoClass のデフォルト インターフェイスになります。このウィザードにより、このインターフェイスにあるすべてのメソッドが生成された実装クラスに追加されます。つまり実装ユニットにあるメソッドの本体を入力することだけが必要です。既存のインターフェイスを選択した場合は、インターフェイスはユーザーのプロジェクトのタイプ ライブラリに追加されないことに注意してください。つまり、ユーザーのオブジェクトを展開するときは、インターフェイスを定義したタイプ ライブラリも展開する必要があります。
  • タイプ ライブラリをインクルードする: ユーザーのオブジェクトにタイプ ライブラリをインクルードするかどうかを選択できます。これは次の 2 つの理由からお勧めします。タイプ ライブラリ エディタでインターフェイスを定義できます。したがって多くの実装を更新するときに、ユーザーのオブジェクトとそのインターフェイスに関する情報をクライアントが簡単に取得できます。既存のインターフェイスを実装している場合は、Delphi ではユーザーのプロジェクトでタイプ ライブラリを使用することが必要です。これは元のインターフェイス宣言にアクセスできる唯一の方法です。
  • インターフェイスを Oleautomation に設定: タイプ ライブラリを作成することを選択し、オートメーション対応のタイプに制限する場合は、インプロセス サーバーを生成しないときに、COM がマーシャリングを処理するように設定できます。タイプ ライブラリでユーザーのオブジェクト インターフェイスを OleAutomation としてマークすることにより、COM によりプロキシとスタブが設定されるようにでき、プロセス間でパラメータを渡す処理をします。新しいインターフェイスを生成する場合は、ユーザーのインターフェイスをオートメーション対応にするかどうかだけを指定できます。既存のインターフェイスを選択する場合は、その属性は、タイプ ライブラリですでに指定されています。ユーザーのオブジェクトのインターフェイスが OleAutomation とマークされていない場合は、インプロセス サーバーを作成するか、専用のマーシャリング コードを作成する必要があります。

オプションとしてユーザーの COM オブジェクトの説明を追加できます。この説明は作成した場合に、ユーザーのオブジェクトに対してタイプ ライブラリに表示されます。

関連項目