オートメーション オブジェクト ウィザードまたは ASP オブジェクト ウィザード
[ファイル]メニュー への移動
[ファイル|新規作成|その他...|C++Builder プロジェクト|ActiveX]
[ファイル|新規作成|その他...|Delphi プロジェクト|ActiveX]
オートメーション サーバーまたは ActiveX サーバー オブジェクトを ActiveX ライブラリ プロジェクトに追加するには、新しいオートメーション オブジェクト ウィザードまたは ASP オブジェクト ウィザードを使用します。ウィザードを開くには、ActiveX ライブラリを開いておく必要があります。ウィザードでは、タイプ ライブラリとオートメーション オブジェクトの定義を作成します。
オートメーション オブジェクトは、ユーザー単位またはすべてのユーザーに対して登録できます。詳細は、「COM オブジェクトを登録する」および「ActiveX サーバーの現在のユーザーの登録」を参照してください。
項目 | 説明 |
---|---|
[CoClass 名] |
クライアント アプリケーションに公開するプロパティおよびメソッドのクラスを指定します。(Delphi によってこの名前の先頭に T が付けられます。) |
[インスタンス生成] |
オートメーション サーバーの起動方法を示すインスタンス生成モードを指定します。 |
[スレッド モデル] |
オートメーション オブジェクトのインターフェイス呼び出しを COM がシリアル化する方法を示すスレッド モデルを選択します。選択したスレッドモデルによって、オブジェクトの登録方法が決まります。選択したモデルに従ったオブジェクト実装を行う必要があります。 |
[イベント サポートのためのコードを生成] |
このボックスをオンにすると、オートメーション オブジェクトでイベントを管理するために別個のインターフェイスを実装することができます。このインターフェイスの名前は ICoClassNameEvents であり、クライアントによって実装される必要があるイベント ハンドラを定義します。アプリケーションはこのインターフェイスを実装しません。 |
[インスタンス生成]ドロップダウン リストで、次のインスタンス生成タイプのいずれかを選択します。
インスタンス生成 | 意味 |
---|---|
[内部] |
オブジェクトは内部でしか作成できません。外部アプリケーションはオブジェクトのインスタンスを直接作成できません。 |
[単一インスタンス] |
各実行可能ファイル(アプリケーション)の単一の COM インターフェイスだけを許可します。したがって、複数のインスタンスを作成すると、アプリケーションの複数のインスタンスが起動します。 |
[多重インスタンス] |
複数のクライアントがアプリケーションに接続できるように指定します。クライアントがオブジェクトを要求するたびに、インスタンスが別個に 1 つのプロセス空間に作成されます。つまり、1 つの実行可能ファイルに複数のインスタンスが存在できます。 |
メモ:COM+ では、オブジェクト呼び出しのシリアル化は、アクティビティへの参加方法の影響も受けます。これは、タイプ ライブラリ エディタの[COM+]ページまたは COM+ コンポーネント マネージャを使用して構成できます。
[スレッド モデル]ドロップダウン リストで、次の値のいずれかを選択できます。
スレッド モデル | 意味 |
---|---|
[単一] |
クライアントは一度に処理されるため、スレッド サポートは必要ありません。 |
[アパートメント スレッド モデル] |
一度に、1 つのクライアント スレッドだけがオブジェクトを呼び出せます。すべてのクライアント呼び出しで、オブジェクトを作成したスレッドが使用されます。クリティカル セクションまたはシリアル化のいずれかのフォームを使用して、グローバル データを保護する必要があります。 |
[使用可能] |
各オブジェクト インスタンスは、複数のスレッドによって同時に呼び出すことができます。グローバル メモリ同様、インスタンス データも保護する必要があります。 |
[両方] |
これは、[使用可能]スレッド モデルと同じですが、クライアントが供給するコールバックはすべて、同じスレッドでの実行が保証されている点が異なります。つまり、パラメータとしてコールバック関数に提供した値を保護する必要はありません。 |
[ニュートラル] |
複数のクライアントから、オブジェクトを異なるスレッドで、同時に呼び出すことができますが、COM は 2 つの呼び出しが衝突しないことを保証します。グローバル データや複数のメソッドがアクセスするインスタンス データにかかわるスレッドの衝突から保護する必要があります。このモデルはユーザー インターフェイスを持つオブジェクトでは使用しないでください。このモデルは COM+ でのみ利用できます。COM の場合は、[アパートメント スレッド モデル]にマップされます。 |
メモ:COM+ では、オブジェクト呼び出しのシリアル化は、アクティビティへの参加方法の影響も受けます。これは、タイプ ライブラリ エディタの[COM+]ページまたは COM+ コンポーネント マネージャを使用して構成できます。