Win32 API 日本語リファレンス
ホームUI.Shell › IPersistFolder3

IPersistFolder3

COM
IIDcef04fdf-fe72-11d2-87a5-00c04f6837cf継承元IPersistFolder2自前メソッド開始 vtbl6

公式ドキュメント

IPersistFolder および IPersistFolder2 インターフェースを拡張し、フォルダーオブジェクトがフォルダーショートカットの既定以外の処理を実装できるようにします。

解説(Remarks)

このインターフェースは、継承元である IPersistIPersistFolder、および IPersistFolder2 の各インターフェースが備えるメソッドも提供します。

Windows Vista より前の Windows のバージョンでは、このインターフェースは Shlobj.h で宣言されていました。

実装するタイミング

名前空間拡張は、フォルダーショートカットの既定以外の処理を行う必要がある場合に、このインターフェースを実装します。

使用するタイミング

アプリケーションが通常、このインターフェースを直接使用することはありません。

メソッド 2

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 6 HRESULT InitializeEx(IBindCtx* pbc, ITEMIDLIST* pidlRoot, PERSIST_FOLDER_TARGET_INFO* ppfti)

フォルダーを初期化し、名前空間内での位置を指定します。フォルダーがショートカットである場合、このメソッドはターゲットフォルダーの位置も指定します。

pbcIBindCtx*inバインドコンテキストを提供する IBindCtx オブジェクトへのポインター。このパラメーターは NULL にできます。
pidlRootITEMIDLIST*inフォルダーまたはフォルダーショートカットの絶対的な位置を指定する完全修飾 PIDL へのポインター。この PIDL の割り当てと解放は、呼び出し側のアプリケーションが行います。
ppftiPERSIST_FOLDER_TARGET_INFO*in

ターゲットフォルダーの位置とその属性を指定する PERSIST_FOLDER_TARGET_INFO 構造体へのポインター。

ppfti が有効な構造体を指している場合、pidlRoot はフォルダーショートカットを表します。

ppftiNULL に設定されている場合、pidlRoot は通常のフォルダーを表します。その場合、InitializeExInitialize が呼び出されたかのように動作する必要があります。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

この関数は IPersistFolder::Initialize の拡張版です。これにより、シェルは通常のフォルダーだけでなくフォルダーショートカットも初期化できます。

vtbl 7 HRESULT GetFolderTargetInfo(PERSIST_FOLDER_TARGET_INFO* ppfti)

フォルダーショートカットのターゲットフォルダーの位置と属性を提供します。

ppftiPERSIST_FOLDER_TARGET_INFO*outターゲットフォルダーの位置と属性を返すために使用される PERSIST_FOLDER_TARGET_INFO 構造体へのポインター。

戻り値

型: HRESULT

このメソッドが成功すると S_OK を返します。それ以外の場合は、HRESULT エラーコードを返します。

解説(Remarks)

PERSIST_FOLDER_TARGET_INFO 構造体は、呼び出し側によって初期化されていない場合があります。GetFolderTargetInfo は、呼び出し側に構造体を返す前に、そのすべてのメンバーに値を割り当てる必要があります。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IPersistFolder3 "{CEF04FDF-FE72-11D2-87A5-00C04F6837CF}"
#usecom global IPersistFolder3 IID_IPersistFolder3 "{}"
#comfunc global IPersistFolder3_InitializeEx         6 sptr,var,var
#comfunc global IPersistFolder3_GetFolderTargetInfo  7 var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。