オブジェクトのクラス識別子 (CLSID) を取得する。
IPersist_GetClassID this, pClassID
this : [comobj] IPersist インターフェースの COM オブジェクト変数 pClassID : [var] 戻り時に CLSID を受け取る場所へのポインター。CLSID はグローバル一意識別子 (GUID) であり、オブジェクトデータを操作するコードを定義するオブジェクトクラスを一意に表す。
(プラグイン / モジュール : com_misc.dll)
オブジェクトのクラス識別子 (CLSID) を取得する。 [戻り値] メソッドが成功した場合、戻り値は S_OK。そうでなければ E_FAIL。 [備考] GetClassID メソッドはオブジェクトのクラス識別子 (CLSID) を取得する。これは後の操作でオブジェクト固有のコードを呼び出し側のコンテキストにロードするために使われる。呼び出し側へのメモ コンテナーアプリケーションは、あるクラスを別のクラスとして扱っているオブジェクトの元の CLSID を取得するためにこのメソッドを呼び出すことがある。このような呼び出しは、ユーザーがオブジェクトの保存を必要とする編集操作を行ったときに必要になる。コンテナーが treat-as CLSID で保存した場合、元のアプリケーションはオブジェクトを編集できなくなる。通常このような場合、コンテナーは必要なステップをすべて実行する OleSave ヘルパー関数を呼び出す。そのため、このメソッドを直接呼び出す必要のあるコンテナーアプリケーションはほとんどない。例外は特定のオブジェクトに対してオブジェクトハンドラーを提供するコンテナーである。特に、コンテナーアプリケーションはオブジェクトの CLSID を取得してそれを使ってレジストリからクラス固有の情報を取得するべきではない。代わりに IOleObject および IDataObject インターフェースを使用して、オブジェクトから直接クラス固有の情報を取得すべきである。実装者へのメモ 通常このメソッドの実装はオブジェクトに対する定数 CLSID を単に提供する。ただしオブジェクトの TreatAs レジストリキーがエミュレーションをサポートするアプリケーションによって設定されている(つまりオブジェクトを別クラスのものとして扱っている)場合、GetClassID の呼び出しは TreatAs キーで指定された CLSID を提供しなければならない。エミュレーションの詳細については CoTreatAsClass を参照。オブジェクトが実行状態にあるとき、既定ハンドラーは GetClassID の実装を呼び出し、それをオブジェクト内の実装に委譲する。オブジェクトが実行中でないとき、既定ハンドラーは代わりに ReadClassStg 関数を呼び出してオブジェクトのストレージに保存された CLSID を読み取る。オブジェクト用のカスタムハンドラーを書く場合、このメソッドを既定ハンドラーの実装に単純に委譲したいこともあるだろう(OleCreateDefaultHandler を参照)。 URL モニカに関する注意 このメソッドは CLSID_StdURLMoniker を返す。
| プラグイン / モジュール | com_misc.dll |
| バージョン | 1.0 |
| 作成日 | 2026/04/16 |
| 著作者 | IronHSP / CsWin32 bridge |
| URL | https://github.com/inovia/IronHSP |
| 備考 | Win32 API の com_misc.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。 |
| タイプ | 拡張命令 |
| グループ | Win32API |
| 対応環境 |
|
| hs ファイル | hsphelp\win32_com_misc_gen2.hs |