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

IPropertyDescription

COM
IID6f79d558-3e96-4549-a1d1-7d75d2288814継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

個々のプロパティ記述の詳細を列挙および取得するメソッドを公開します。(IPropertyDescription)

解説(Remarks)

実装するタイミング

このインターフェイスは実装しないでください。システムには IPropertyDescription の実装が 1 つだけ存在し、それは Shell によって提供されます。

このインターフェイスを取得するには、PSGetPropertyDescriptionPSGetPropertyDescriptionByName、または IPropertyDescriptionList::GetAt を呼び出します。

システム内の各プロパティに対して、プロパティ記述は 1 つだけ存在します。

メソッド 21

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

vtbl 3 HRESULT GetPropertyKey(PROPERTYKEY* pkey)

プロパティの一意の識別子として機能する構造体を取得します。

pkeyPROPERTYKEY*outこのメソッドが返るとき、PROPERTYKEY 構造体へのポインターが格納されます。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドが取得する情報は、プロパティの .propdesc ファイル内の propertyDescription 要素に由来します。

vtbl 4 HRESULT GetCanonicalName(LPWSTR* ppszName)

ローカライズされた名前に関係なく、システムがプロパティを識別するために使用する、大文字と小文字を区別する名前を取得します。

ppszNameLPWSTR*outこのメソッドが返るとき、プロパティの正規名を null で終わる Unicode 文字列として指すポインターのアドレスが格納されます。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドが取得する情報は、プロパティの .propdesc ファイル内の propertyDescription 要素の name 属性に由来します。

ppszName が参照する文字列が不要になったときに CoTaskMemFree を使用して解放するのは、呼び出し側アプリケーションの責任です。

vtbl 5 HRESULT GetPropertyType(WORD* pvartype)

プロパティのバリアント型を取得します。

pvartypeWORD*out

このメソッドが返るとき、プロパティの型を示す VARTYPE へのポインターが格納されます。プロパティが複数値を持つ場合、指し示される値は VT_VECTOR マスク(VT_VECTORVARTYPE と OR したもの)になります。指定できるバリアント型は次のとおりです。

VT_NULL

値は任意の型を取ることができます。型変換は行われません。型を取得できない場合、このメソッドは既定値として VT_NULL を取得します。

VT_LPWSTR

文字列

VT_BOOL

ブール値

VT_UI1

バイト

VT_I2

16 ビット符号付き整数

VT_UI2

16 ビット符号なし整数

VT_I4

32 ビット符号付き整数

VT_UI4

32 ビット符号なし整数

VT_I8

64 ビット符号付き整数

VT_UI8

64 ビット符号なし整数

VT_R8

倍精度浮動小数点数

VT_FILETIME

FILETIME 構造体

VT_CLSID

GUID

VT_BLOB

種類の指定されないバイナリデータ

VT_UNKNOWN

IUnknown を実装するオブジェクト

VT_STREAM

IStream を実装するオブジェクト

戻り値

型: HRESULT

このメソッドは常に S_OK を返します。

解説(Remarks)

このメソッドが取得する情報は、プロパティの .propdesc ファイル内の typeInfo 要素の type 属性に由来します。

vtbl 6 HRESULT GetDisplayName(LPWSTR* ppszName)

任意の UI に表示されるプロパティの表示名を取得します。

ppszNameLPWSTR*outプロパティの名前を null で終わる Unicode 文字列として指すポインターのアドレスが格納されます。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値 説明
S_OK
表示名が取得されました。
E_INVALIDARG
ppszDisplayName パラメーターが NULL です。
E_OUTOFMEMORY
メモリの割り当てに失敗しました。

解説(Remarks)

このメソッドが取得する情報は、プロパティの .propdesc ファイル内の labelInfo 要素の singularLabel 属性および pluralLabel 属性に由来します。

ppszDisplayName が参照する文字列が不要になったときに CoTaskMemFree を使用して解放するのは、呼び出し側アプリケーションの責任です。

vtbl 7 HRESULT GetEditInvitation(LPWSTR* ppszInvite)

各種ダイアログボックスにホストされる編集コントロールで使用されるテキストを取得します。

ppszInviteLPWSTR*outこのメソッドが返るとき、入力を促すテキストを保持する null で終わる Unicode バッファーを指すポインターのアドレスが格納されます。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドが取得する情報は、プロパティの .propdesc ファイル内の labelInfo 要素の invitationText 属性に由来します。

pszInvite が参照する文字列が不要になったときに CoTaskMemFree を使用して解放するのは、呼び出し側アプリケーションの責任です。

vtbl 8 HRESULT GetTypeFlags(PROPDESC_TYPE_FLAGS mask, PROPDESC_TYPE_FLAGS* ppdtFlags)

プロパティの用途と機能を表すフラグのセットを取得します。

maskPROPDESC_TYPE_FLAGSin取得する型フラグを指定するマスクです。PROPDESC_TYPE_FLAGS 定数の値の組み合わせです。すべての型フラグを取得するには、PDTF_MASK_ALL を渡します。
ppdtFlagsPROPDESC_TYPE_FLAGS*outこのメソッドが返るとき、ビットごとの PROPDESC_TYPE_FLAGS 値で構成される値へのポインターが格納されます。

戻り値

型: HRESULT

常に S_OK を返します。

解説(Remarks)

プロパティ記述インスタンスが PSGetPropertyDescription または PSGetPropertyDescriptionByName から取得されたものである場合、これらのフラグはプロパティ記述を定義する .propdesc ファイルに由来します。

インスタンスが GetAt から取得されたものである場合、型フラグは .propdesc ファイルに由来し、特定の proplist の影響を受けることがあります。つまり、あるプロパティ記述インスタンスから取得したフラグが、別のインスタンス(いずれも同じプロパティを参照)から取得したフラグとわずかに異なる場合があります。

型フラグの詳細については、プロパティの .propdesc ファイル内の typeInfo 要素の canGroupBycanStackByisInnatemultipleValuesisGroupisTreePropertyisViewableisQueryableincludeInFullTextQuery の各属性を参照してください。

vtbl 9 HRESULT GetViewFlags(PROPDESC_VIEW_FLAGS* ppdvFlags)

プロパティのビューを制御する現在のフラグのセットを取得します。

ppdvFlagsPROPDESC_VIEW_FLAGS*outこのメソッドが返るとき、次のフラグの 1 つ以上を含む値へのポインターが格納されます。有効な値については PROPDESC_VIEW_FLAGS を参照してください。

戻り値

型: HRESULT

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

vtbl 10 HRESULT GetDefaultColumnWidth(DWORD* pcxChars)

リストビューにおけるプロパティの既定の列幅を取得します。

pcxCharsDWORD*out列幅の値(文字数単位)へのポインターです。

戻り値

型: HRESULT

常に S_OK を返します。

解説(Remarks)

このメソッドが取得する値は、元々はプロパティの .propdesc ファイル内の displayInfo 要素の defaultColumnWidth 属性を通じて設定されます。

.propdesc ファイルに値が設定されていない場合、またはメソッドが失敗した場合、pcxChars が指す値は 20 文字になります。

vtbl 11 HRESULT GetDisplayType(PROPDESC_DISPLAYTYPE* pdisplaytype)

プロパティの表示に使用される現在のデータ型を取得します。

pdisplaytypePROPDESC_DISPLAYTYPE*out

表示型を示す値へのポインターが格納されます。次のいずれかの値です。

PDDT_STRING (0x00000000) (0)

値は文字列として表示されます。

PDDT_NUMBER (0x00000001) (1)

値は整数として表示されます。

PDDT_BOOLEAN (0x00000002) (2)

値はブール値として表示されます。

PDDT_DATETIME (0x00000003) (3)

値は日付と時刻として表示されます。

PDDT_ENUMERATED (0x00000004) (4)

値は列挙型のリストとして表示されます。 この型を扱うには IPropertyDescription::GetEnumTypeList を使用します。

戻り値

型: HRESULT

常に S_OK を返します。

解説(Remarks)

このメソッドが取得する値は、元々はプロパティの .propdesc ファイル内の displayInfo 要素の displayType 属性を通じて設定されます。

vtbl 12 HRESULT GetColumnState(DWORD* pcsFlags)

このフラグを使用するインターフェイスまたは API がプロパティをどのように扱うべきかを表す列状態フラグを取得します。

pcsFlagsDWORD*outこのメソッドが返るとき、列状態フラグへのポインターが格納されます。有効な値については SHCOLSTATE を参照してください。

戻り値

型: HRESULT

常に S_OK を返します。

解説(Remarks)

このメソッドが取得する値は、元々はプロパティの .propdesc ファイル内の displayInfo 要素の displayType 属性を通じて設定されます。

vtbl 13 HRESULT GetGroupingRange(PROPDESC_GROUPING_RANGE* pgr)

ビューがプロパティでグループ化されるときに使用されるグループ化方法を取得し、グループ化の種類を取得します。

pgrPROPDESC_GROUPING_RANGE*out

グループ化の種類を示すフラグ値へのポインターを受け取ります。指定できる値は次のとおりです。

PDGR_DISCRETE

個々の値を表示します。

PDGR_ALPHANUMERIC

静的な英数字の範囲を表示します。

PDGR_SIZE

静的なサイズの範囲を表示します。

PDGR_DYNAMIC

動的に作成される範囲を表示します。

PDGR_DATE

月と年のグループを表示します。

PDGR_PERCENT

パーセントのグループを表示します。

PDGR_ENUMERATED

IPropertyDescription::GetEnumTypeList によって返されるパーセントのグループを表示します。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドが取得する情報は、プロパティの .propdesc ファイル内の typeInfo 要素の groupingRange 属性に由来します。

vtbl 14 HRESULT GetRelativeDescriptionType(PROPDESC_RELATIVEDESCRIPTION_TYPE* prdt)

プロパティ記述の相対記述の種類を取得します。

prdtPROPDESC_RELATIVEDESCRIPTION_TYPE*outこのメソッドが返るとき、相対記述の種類の値へのポインターが格納されます。有効な値については PROPDESC_RELATIVEDESCRIPTION_TYPE を参照してください。

戻り値

型: HRESULT

常に S_OK を返します。

解説(Remarks)

このメソッドが取得する情報は、プロパティの .propdesc ファイル内の displayInfo 要素の relativeDescriptionType 属性に由来します。

vtbl 15 HRESULT GetRelativeDescription(PROPVARIANT* propvar1, PROPVARIANT* propvar2, LPWSTR* ppszDesc1, LPWSTR* ppszDesc2)

プロパティ記述で指定された方法で 2 つのプロパティ値を比較します。2 つのプロパティの比較結果を表す 2 つの表示文字列を返します。

propvar1PROPVARIANT*in1 つ目のプロパティの型と値を格納する PROPVARIANT 構造体への参照です。
propvar2PROPVARIANT*in2 つ目のプロパティの型と値を格納する PROPVARIANT 構造体への参照です。
ppszDesc1LPWSTR*outこのメソッドが返るとき、1 つ目のプロパティを 2 つ目のプロパティと比較する記述文字列を指すポインターのアドレスが格納されます。文字列は null で終わります。
ppszDesc2LPWSTR*outこのメソッドが返るとき、2 つ目のプロパティを 1 つ目のプロパティと比較する記述文字列を指すポインターのアドレスが格納されます。文字列は null で終わります。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドは、プロパティの .propdesc ファイル内の displayInfo 要素の relativeDescriptionType 属性の影響を受けます。

ppszDesc1 および ppszDesc2 が不要になったときに CoTaskMemFree を使用して解放するのは、呼び出し側アプリケーションの責任です。

vtbl 16 HRESULT GetSortDescription(PROPDESC_SORTDESCRIPTION* psd)

並べ替えの選択肢の具体的な表現を示す、プロパティの現在の並べ替え記述フラグを取得します。

psdPROPDESC_SORTDESCRIPTION*out

このメソッドが返るとき、ユーザーが利用できる並べ替えの種類を示す次のフラグの 1 つ以上の値へのポインターが格納されます。表示されている文字列は英語版のみであることに注意してください。他のロケールではローカライズされた文字列が使用されます。

PDSD_GENERAL

既定値。"Sort going up"、"Sort going down"

PDSD_A_Z

"A on top"、"Z on top"

PDSD_LOWEST_HIGHEST

"Lowest on top"、"Highest on top"

PDSD_SMALLEST_BIGGEST

"Smallest on top"、"Largest on top"

PDSD_OLDEST_NEWEST

"Oldest on top"、"Newest on top"

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドが取得する設定は、プロパティの .propdesc ファイル内の labelInfo 要素の sortDescription 属性を通じて設定されます。

vtbl 17 HRESULT GetSortDescriptionLabel(BOOL fDescending, LPWSTR* ppszDescription)

現在の並べ替え順序を表す、ローカライズされた表示文字列を取得します。

fDescendingBOOLinppszDescription が文字列 "Z on top" を参照する場合は TRUE、文字列 "A on top" を参照する場合は FALSE です。
ppszDescriptionLPWSTR*outこのメソッドが返るとき、並べ替えの記述を null で終わる Unicode 文字列として指すポインターのアドレスが格納されます。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドが取得する文字列は、プロパティの .propdesc ファイル内の labelInfo 要素の sortDescription 属性に設定されたフラグによって決まります。

ppszDescription が不要になったときに解放するのは、呼び出し側アプリケーションの責任です。

vtbl 18 HRESULT GetAggregationType(PROPDESC_AGGREGATION_TYPE* paggtype)

UI で複数の項目が選択されているときにプロパティ値がどのように表示されるかを表す値を取得します。

paggtypePROPDESC_AGGREGATION_TYPE*outこのメソッドが返るとき、集約の種類を示す値へのポインターが格納されます。PROPDESC_AGGREGATION_TYPE を参照してください。

戻り値

型: HRESULT

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

解説(Remarks)

このメソッドが取得する情報は、プロパティの .propdesc ファイル内の typeInfo 要素の aggregationType 属性に由来します。

vtbl 19 HRESULT GetConditionType(PROPDESC_CONDITION_TYPE* pcontype, CONDITION_OPERATION* popDefault)

クエリビルダー UI にプロパティを表示するときに使用する条件の種類と既定の条件演算を取得します。これは、このプロパティに対して表示される述語条件(たとえば、等しい、より小さい、含む)のリストに影響します。

pcontypePROPDESC_CONDITION_TYPE*out条件の種類を示す値へのポインターです。
popDefaultCONDITION_OPERATION*outこのメソッドが返るとき、既定の条件演算を示す値へのポインターが格納されます。

戻り値

型: HRESULT

常に S_OK を返します。

解説(Remarks)

詳細については、プロパティの .propdesc ファイル内の typeInfo 要素の conditionType 属性を参照してください。

vtbl 20 HRESULT GetEnumTypeList(GUID* riid, void** ppv)

プロパティに指定できる値を列挙するために使用できる IPropertyEnumTypeList のインスタンスを取得します。

riidGUID*inppv を通じて取得するインターフェイスの IID への参照です。通常は IID_IShellItem です。
ppvvoid**outこのメソッドが成功して返るとき、riid で要求されたインターフェイスポインターが格納されます。通常は IPropertyEnumTypeList です。

戻り値

型: HRESULT

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

vtbl 21 HRESULT CoerceToCanonicalValue(PROPVARIANT* ppropvar)

プロパティ記述に従って、値を正規の値に変換します。

ppropvarPROPVARIANT*inout入力時には、元の値を格納する PROPVARIANT 構造体へのポインターが格納されています。このメソッドが返るとき、正規の値が格納されます。

戻り値

型: HRESULT

失敗コードが INPLACE_S_TRUNCATED または E_INVALIDARG でない場合、値の型からプロパティ記述の型への変換ができなかったことを意味し、PROPVARIANT 構造体はクリアされています。

返される可能性のある結果には次のものがあります。

戻り値 説明
S_OK
関数は成功しました。ppropvar で指定されたプロパティ値は、現在正規形になっています。
INPLACE_S_TRUNCATED
ppropvar で指定されたプロパティ値は、現在切り詰められた正規形になっています。
E_INVALIDARG
ppropvar パラメーターが無効です。PROPVARIANT 構造体はクリアされています。

解説(Remarks)

詳細については、プロパティの .propdesc ファイル内の typeInfo 要素の type 属性を参照してください。

ほとんどのプロパティ記述は、その値が使用すると想定される型を指定します。たとえば、System.Title のプロパティ記述は、System.Title の値が VT_LPWSTR を使用するべきであることを指定します。このメソッドは値をこの型に変換し、その結果を正規形に変換します。

重要な点として、このメソッドが失敗した場合、入力された PROPVARIANT 構造体に対して既に PropVariantClear が呼び出されています。このメソッドが成功した場合にのみ、構造体が不要になったときに ppropvar に対して PropVariantClear を呼び出す責任が呼び出し側アプリケーションにあります。

このメソッドが実行する変換は、IPropertyStore::GetValue および IPropertyStore::SetValue の呼び出し時にプロパティシステムによっても実行されます。アプリケーションは、変換の実行をプロパティシステムに任せることも、このメソッドを使用してアプリケーションが選択したタイミングで変換を実行することもできます。

変換は次のように 4 つのステップで実行されます。

  1. 次の値は VT_EMPTY に変換されます。
    • VT_NULL 型の値。
    • VT_LPWSTR, VT_BSTR、または VT_LPSTR 型で、ポインターが NULL である値。
    • VT_LPWSTR, VT_BSTR、または VT_LPSTR 型で、空、またはすべてが空白で構成される値。
    • VT_FILETIME 型で、1601/01/02 の午前 0 時より前の値。
  2. ステップ 1 の後で値が VT_EMPTY 型でない場合、プロパティ記述で指定された型に変換されます。プロパティ記述の型は IPropertyDescription::GetPropertyType を使用して取得できます。プロパティスキーマがプロパティ記述の型にどのように影響するかについては、typeInfo を参照してください。変換は次のように実行されます。
  3. ステップ 2 と 3 の後、値はその型に基づいて正規形に変換されます。正規形を次の表にまとめます。
    値の型 正規形
    VT_EMPTY 常に正規形です。
    VT_LPWSTR
    • 先頭または末尾に空白がありません。文字列は空ではありません。文字列は NULL ではありません。たとえば L"Alice" です。
    • これがツリープロパティである場合(つまり typeInfo 要素の isTreeProperty 属性が TRUE である場合)、先頭または末尾にスラッシュ (/) があってはならず、テキストとスラッシュの間に空白があってはならず、連続する 2 つのスラッシュ (/) があってはなりません。たとえば L"Friend/Bob" です。
    • 変換により不要な文字が削除され、内容がなかった場合は VT_EMPTY になります。
    VT_VECTOR | VT_LPWSTR
    • ベクター内の各文字列は、上記の VT_LPWSTR の規則に従う必要があります。さらに、ベクターには重複がなく、null ポインターがあってはなりません。
    • これがツリープロパティである場合、いずれの値も別の値の先祖であってはなりません。たとえば L"Friend" は L"Friend/Bob" の先祖です。
    • 内容がない場合、変換により重複と先祖の文字が削除され、VT_EMPTY になります。
  4. 該当する場合、値はプロパティ記述の型の列挙に対して検査されます。次の検査が適用されます。
    列挙の種類 値の型 正規形
    離散または範囲 VT_EMPTY 常に正規形
    離散 VT_LPWSTR 文字列は、プロパティに許可された列挙文字列のいずれかと一致します。比較では大文字と小文字は区別されません。一致しない場合、値を VT_EMPTY に変換します。
    離散 数値 数値は、プロパティに許可された列挙値のいずれかと一致します。一致しない場合、値を VT_EMPTY に変換します。
    離散 VT_VECTOR | VT_LPWSTR ベクター内の各文字列は、プロパティに許可された列挙文字列のいずれかと一致します。比較では大文字と小文字は区別されません。一致しない場合、その文字列をベクターから削除します。結果のベクターが空になった場合、値を VT_EMPTY に変換します。
    離散 VT_VECTOR | 数値 ベクター内の各数値は、プロパティに許可された列挙値のいずれかと一致します。一致しない場合、その数値をベクターから削除します。結果のベクターが空になった場合、値を VT_EMPTY に変換します。
    範囲 VT_LPWSTR 文字列は、プロパティに許可された範囲内に存在します。比較では大文字と小文字が区別されます。存在しない場合、値を VT_EMPTY に変換します。
    範囲 数値 数値は、プロパティに許可された範囲内に存在します。存在しない場合、値を VT_EMPTY に変換します。
    範囲 VT_VECTOR | VT_LPWSTR ベクター内の各文字列は、プロパティに許可された範囲内に存在します。比較では大文字と小文字が区別されます。存在しない場合、その文字列をベクターから削除します。結果のベクターが空になった場合、値を VT_EMPTY に変換します。
    範囲 VT_VECTOR | 数値 ベクター内の各数値は、プロパティに許可された範囲内に存在します。存在しない場合、その数値をベクターから削除します。結果のベクターが空になった場合、値を VT_EMPTY に変換します。
vtbl 22 HRESULT FormatForDisplay(PROPVARIANT* propvar, PROPDESC_FORMAT_FLAGS pdfFlags, LPWSTR* ppszDisplay)

プロパティ値の、書式設定された Unicode 文字列表現を取得します。(IPropertyDescription.FormatForDisplay)

propvarPROPVARIANT*inプロパティの型と値を格納する PROPVARIANT 構造体への参照です。
pdfFlagsPROPDESC_FORMAT_FLAGSinプロパティ文字列の書式を示す PROPDESC_FORMAT_FLAGS フラグの 1 つ以上で、ビットごとの値または複数の値です。
ppszDisplayLPWSTR*out

表示テキストを格納する null で終わる Unicode 文字列を指すポインターのアドレスです。

- cchText [out]

型: DWORD

終端の NULL を含む、pszText のバッファーの長さ(WCHAR 単位)です。最大サイズは 0x8000 (32K) です。

- key [in]

型: REFPROPERTYKEY

プロパティを識別する、要求されたプロパティキーへの参照です。PROPERTYKEY を参照してください。

- pszText [out]

型: LPWSTR*

このメソッドが返るとき、書式設定された値が null で終わる Unicode 文字列として格納されます。呼び出し側アプリケーションはバッファーのメモリを割り当てる必要があり、pszText で指定された文字列が不要になったときに CoTaskMemFree を使用して解放する必要があります。

戻り値

型: HRESULT

次のいずれかの値を返します。

戻り値 説明
S_OK
文字列は切り詰められることなくコピーされ、null で終端されました。この文字列は、入力文字列が空である場合や、空でない値が空文字列に書式設定された場合に、空で返されることがあります。
S_FALSE
VT_EMPTY によって空文字列が生じました。
E_INVALIDARG
pszText パラメーターが NULL です。
ERROR_INSUFFICIENT_BUFFER
空き領域が不足したためコピー操作が失敗しました。宛先バッファーは、理想的な結果の切り詰められたバージョンを格納するように変更され、null で終端されます。

解説(Remarks)

IPropertyDescription::FormatForDisplay を呼び出す前に、CoInitialize または OleInitialize を使用して Component Object Model (COM) を初期化する必要があります。

成功した場合、このメソッドは指定された PROPERTYKEY と 1 つ以上の PROPDESC_FORMAT_FLAGS に対するプロパティ値の、書式設定された Unicode 文字列表現を取得します。

このメソッドの目的は、データをユーザーへの表示に適した文字列に変換することです。値は、現在のロケール、ユーザーの言語、PROPDESC_FORMAT_FLAGS、およびプロパティキーで指定されたプロパティ記述に従って書式設定されます。プロパティ記述スキーマが値の書式設定にどのように影響するかについては、displayInfostringFormatbooleanFormatnumberFormatNMDATETIMEFORMATenumeratedList を参照してください。通常、PROPDESC_FORMAT_FLAGS は、プロパティ記述で規定された書式を変更するために使用されます。

出力文字列には Unicode の方向制御文字を含めることができます。これらの非スペーシング文字は Unicode 双方向アルゴリズムに影響を与え、左から右 (LTR) の言語が右から左 (RTL) のウィンドウに描画される場合やその逆の場合でも、値が正しく表示されるようにします。これらの文字には次のものが含まれます。"\x200e", "\x200f", "\x202a", "\x202b", "\x202c", "\x202d", "\x202e".

次のプロパティは特別な書式を使用し、PROPDESC_FORMAT_FLAGS の影響を受けません(挙げられている例は現在のロケールが英語に設定されている場合の文字列です。通常、注記のある場合を除き、出力はローカライズされます)。

プロパティ 書式
System.FileAttributes 次のファイル属性が文字に変換され、連結されて文字列が作成されます(たとえば、0x1801 (FILE_ATTRIBUTE_READONLY | FILE_ATTRIBUTE_COMPRESSED | FILE_ATTRIBUTE_OFFLINE) の値は "RCO" に変換されます)。
                        <ul>
  • FILE_ATTRIBUTE_READONLY (0x00000001) - 'R'
  • FILE_ATTRIBUTE_SYSTEM (0x00000004) - 'S'
  • FILE_ATTRIBUTE_ARCHIVE (0x00000020) -'A'
  • FILE_ATTRIBUTE_COMPRESSED (0x00000800) - 'C'
  • FILE_ATTRIBUTE_ENCRYPTED (0x00004000) - 'E'
  • FILE_ATTRIBUTE_OFFLINE (0x00001000) - 'O'
  • FILE_ATTRIBUTE_NOT_CONTENT_INDEXED (0x00002000) - 'I'
  • System.Photo.ISOSpeed たとえば "ISO-400" です。
    System.Photo.ShutterSpeed APEX 値は、次の式を使用して露出時間に変換されます。

    Exposure_time = 2^(-APEX_value)

    たとえば "2 sec." または "1/125 sec." です。

    System.Photo.ExposureTime たとえば "2 sec." または "1/125 sec." です。
    System.Photo.Aperture APEX 値は、次の式を使用して F 値に変換されます。

    F_Number = 2^(APEX_Value / 2)

    たとえば "f/5.6" です。

    System.Photo.FNumber たとえば "f/5.6" です。
    System.Photo.SubjectDistance たとえば "15 m" または "250 mm" です。
    System.Photo.FocalLength たとえば "50 mm" です。
    System.Photo.FlashEnergy たとえば "500 bpcs" です。
    System.Photo.ExposureBias たとえば "-2 step"、" 0 step"、"+3 step" です。
    System.Computer.DecoratedFreeSpace たとえば "105 MB free of 13.2 GB" です。
    System.ItemType たとえば "Application" または "JPEG Image" です。
    System.ComputerName たとえば "LITWARE05 (this computer)" または "testbox07" です。
    vtbl 23 HRESULT IsValueCanonical(PROPVARIANT* propvar)

    プロパティ記述の定義に従って、プロパティが正規であるかどうかを示す値を取得します。

    propvarPROPVARIANT*inプロパティの型と値を格納する PROPVARIANT 構造体への参照です。

    戻り値

    型: HRESULT

    次のいずれかの値を返します。

    戻り値 説明
    S_OK
    値は正規です。
    S_FALSE
    値は正規ではありません。
    出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IPropertyDescription "{6F79D558-3E96-4549-A1D1-7D75D2288814}"
    #usecom global IPropertyDescription IID_IPropertyDescription "{}"
    #comfunc global IPropertyDescription_GetPropertyKey              3 var
    #comfunc global IPropertyDescription_GetCanonicalName            4 var
    #comfunc global IPropertyDescription_GetPropertyType             5 var
    #comfunc global IPropertyDescription_GetDisplayName              6 var
    #comfunc global IPropertyDescription_GetEditInvitation           7 var
    #comfunc global IPropertyDescription_GetTypeFlags                8 int,var
    #comfunc global IPropertyDescription_GetViewFlags                9 var
    #comfunc global IPropertyDescription_GetDefaultColumnWidth       10 var
    #comfunc global IPropertyDescription_GetDisplayType              11 var
    #comfunc global IPropertyDescription_GetColumnState              12 var
    #comfunc global IPropertyDescription_GetGroupingRange            13 var
    #comfunc global IPropertyDescription_GetRelativeDescriptionType  14 var
    #comfunc global IPropertyDescription_GetRelativeDescription      15 var,var,var,var
    #comfunc global IPropertyDescription_GetSortDescription          16 var
    #comfunc global IPropertyDescription_GetSortDescriptionLabel     17 int,var
    #comfunc global IPropertyDescription_GetAggregationType          18 var
    #comfunc global IPropertyDescription_GetConditionType            19 var,var
    #comfunc global IPropertyDescription_GetEnumTypeList             20 var,sptr
    #comfunc global IPropertyDescription_CoerceToCanonicalValue      21 var
    #comfunc global IPropertyDescription_FormatForDisplay            22 var,int,var
    #comfunc global IPropertyDescription_IsValueCanonical            23 var
    ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
    ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
    ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
    ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。