MkParseDisplayName

文字列を、その文字列で指定されたオブジェクトを識別するモニカに変換する。

MkParseDisplayName pbc, szUserName, pchEaten, ppmk

pbc : [var] このバインド操作で使用するバインドコンテキストオブジェクト上の IBindCtx インターフェイスへのポインタ。
szUserName : [wstr] 解析対象の表示名へのポインタ。
pchEaten : [var] 消費された szUserName の文字数へのポインタ。関数が成功した場合、*pchEaten は szUserName の長さとなる。そうでない場合は、正常に解析された文字数となる。
ppmk : [var] szUserName から構築されたモニカへのインターフェイスポインタを受け取る IMoniker* ポインタ変数のアドレス。成功時、関数はモニカに対して AddRef を呼び出しており、呼び出し側が Release を呼び出す責任を負う。エラーが発生した場合、指定されたインターフェイスポインタには、エラー発生前に作成できた範囲までのモニカが格納される。

(プラグイン / モジュール : ole32.dll)

解説

文字列を、その文字列で指定されたオブジェクトを識別するモニカに変換する。

[戻り値]
この関数は標準の戻り値 E_OUTOFMEMORY に加えて以下の値を返すことがある。
(以下省略)

[備考]
MkParseDisplayName
関数は、人間が読める名前を、リンク元を識別するために使用できるモニカに解析する。結果のモニカは、単純モニカ(ファイルモニカなど)でも、構成要素のモニカから成る汎用合成モニカでもかまわない。たとえば、表示名
"c:\mydir\somefile!item 1" は、"c:\mydir\somefile" に基づく FileMoniker と
"item 1" に基づく ItemMoniker の汎用合成モニカに解析できる。MkParseDisplayName
のもっとも一般的な用途は、標準の「リンク」ダイアログボックスの実装であり、これにより、エンドユーザーは文字列を入力してリンクオブジェクトのソースを指定できる。ドキュメント外の要素への参照を許可するマクロ言語をアプリケーションがサポートする場合にも、MkParseDisplayName
の呼び出しが必要になる場合がある。

表示名の解析は、バインド操作中にアクティブ化するのと同じオブジェクトのアクティブ化を必要とすることが多いため、(性能面では)バインドと同程度にコストがかかる可能性がある。解析操作中にバインドされたオブジェクトは、関数に渡されるバインドコンテキストにキャッシュされる。MkParseDisplayName
が返したモニカをバインドする予定がある場合は、関数が戻った直後に同じバインドコンテキストを使用してバインドするのが望ましい。そうすることで、オブジェクトを
2 回アクティブ化する必要がなくなる。MkParseDisplayName
は、理解できる範囲の表示名をモニカに解析する。続いて、この関数は新しく作成されたモニカ上で
IMoniker::ParseDisplayName を呼び出し、表示名の残りを渡す。ParseDisplayName
が返すモニカは既存のモニカの末尾に合成され、表示名が未解析のまま残っている場合は、合成結果に対して再び ParseDisplayName
が呼び出される。この処理は表示名全体が解析されるまで繰り返される。MkParseDisplayName
は、表示名の先頭を解析するために、次の方法を順に試し、最初に成功したものを使用する。
(以下省略)

情報

プラグイン / モジュールole32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の ole32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_ole32_gen2.hs