System.Win.ComObj.TComObjectFactory.RegisterClassObject
Delphi
procedure RegisterClassObject;
C++
void __fastcall RegisterClassObject();
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
procedure function |
public | System.Win.ComObj.pas System.Win.ComObj.hpp |
System.Win.ComObj | TComObjectFactory |
説明
ファクトリオブジェクトに関連付けられた COM クラスを登録します。
RegisterClassObject メソッドは,EXE クラスオブジェクトを OLE に登録するので,ほかのアプリケーションはそれに接続できます。EXE オブジェクトアプリケーションは起動するとすぐに RegisterClassObject を呼び出さなければなりません。また,これを使って内部オブジェクトを登録し,同じ EXE やその EXE が使用するほかのコード(DLL など)がそれを利用できるようにできます。
RegisterClassObject が成功しない場合,以下のエラーコードで EOleSysError が発生します。
値 | 意味 |
---|---|
E_INVALIDARG |
1 つまたは複数の引数が無効 |
E_OUTOFMEMORY |
メモリが不十分 |
E_UNEXPECTED |
予想外のエラーが発生した |
CO_E_OBJISREG |
クラスがクラスオブジェクトテーブルに登録済みだった |
EXE オブジェクトアプリケーションだけが RegisterClassObject を呼び出します。オブジェクトハンドラや DLL オブジェクトアプリケーションはこの関数を呼び出しません。それらはかわりに,DllGetClassObject 関数を実現してエクスポートしなければなりません。
起動時に,複数使用 EXE アプリケーションはクラスオブジェクトを(IClassFactory インターフェースをそれに設定して)作成し,クラスオブジェクトを登録するために RegisterClassObject を呼び出さなければなりません。異なる複数のクラスをサポートするオブジェクトアプリケーション(複数種類の埋め込み可能オブジェクトなど)は,それぞれに対して異なるクラスオブジェクトを割り当てて登録する必要があります。
同じクラスオブジェクトを重複して登録しても,それぞれ独立しているのでエラーは発生しません。2 つめ以降の各登録では,ユニークなキーを生じさせます。