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

IPropertyDescriptionList

COM
IID1f9fc1d0-c39b-4b26-817f-011967d3440e継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

リストとして提示されるプロパティ記述のコレクションから情報を抽出するメソッドを公開します。

解説(Remarks)

プロパティの順序付きリストは、詳細ウィンドウやインフォチップなど、さまざまな UI 位置に表示するプロパティを選択するために使用されます。IPropertyDescriptionList インターフェイスは、そのようなリスト内の個々のプロパティへのアクセスを提供します。

IPropertyDescriptionList を実装するサブシステムオブジェクトのインスタンスを取得するには、IShellItem2 インターフェイスを取得して IShellItem2::GetPropertyDescriptionList を呼び出すか、リストを文字列形式で取得して PSGetPropertyDescriptionListFromString を呼び出します。

プロパティ記述リストを文字列形式で取得するには、PKEY_PropList キーのいずれかを指定して IShellItem2::GetString を呼び出します。たとえば、PKEY_PropList_InfoTipSystem.PropList.InfoTip)は、インフォチップに表示するのに適したプロパティリストの文字列形式を返します。アイテムから複数の値を読み取る場合は、アイテムが複数回再オープンされないように、PKEY_PropList キーを指定して IPropertyStore::GetValue を呼び出す方が効率的です。ファイルタイプのプロパティリスト文字列を登録する方法の詳細については、Property Lists を参照してください。

メソッド 2

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

vtbl 3 HRESULT GetCount(DWORD* pcElem)

プロパティリストに含まれるプロパティの数を取得します。

pcElemDWORD*outこのメソッドから制御が戻るとき、プロパティの数へのポインターが格納されます。

戻り値

型: HRESULT

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

vtbl 4 HRESULT GetAt(DWORD iElem, GUID* riid, void** ppv)

プロパティ記述リスト内の指定されたインデックスにあるプロパティ記述を取得します。

iElemDWORDinリスト文字列内のプロパティの番号。
riidGUID*in要求するプロパティ記述インターフェイスの IID への参照。通常は IID_IPropertyDescription です。
ppvvoid**outこのメソッドから制御が戻るとき、riid で要求されたインターフェイスポインターが格納されます。通常は IPropertyDescription です。

戻り値

型: HRESULT

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

解説(Remarks)

riid パラメーターと ppv パラメーターをまとめるには、objbase.h で定義されている IID_PPV_ARGS マクロを使用することをお勧めします。このマクロは、ppv の値が指すインターフェイスに基づいて正しい IID を提供し、コーディングエラーの可能性を排除します。

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IPropertyDescriptionList "{1F9FC1D0-C39B-4B26-817F-011967D3440E}"
#usecom global IPropertyDescriptionList IID_IPropertyDescriptionList "{}"
#comfunc global IPropertyDescriptionList_GetCount  3 var
#comfunc global IPropertyDescriptionList_GetAt     4 int,var,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。