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

IShellFolder2

COM
IID93f2f68c-1d1b-11d3-a30e-00c04f79abd1継承元IShellFolder自前メソッド開始 vtbl13

公式ドキュメント

IShellFolder の機能を拡張します。そのメソッドは、Shell フォルダーの内容に関するさまざまな情報を提供します。

解説(Remarks)

このインターフェイスは、継承元である IShellFolder インターフェイスのメソッドも提供します。

実装するタイミング

名前空間拡張が IShellFolder を超えるサービスをクライアントに提供する場合は、IShellFolder2 を実装してください。

使用するタイミング

Shell フォルダーに含まれる項目の詳細情報が必要な場合は、IShellFolder2 を呼び出してください。このインターフェイスは IShellDetails に取って代わるものです。

メソッド 7

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

vtbl 13 HRESULT GetDefaultSearchGUID(GUID* pguid)

フォルダーの既定の検索オブジェクトのグローバル一意識別子 (GUID) を返します。

pguidGUID*out既定の検索オブジェクトの GUID。

戻り値

種類: HRESULT

成功した場合は S_OK を、それ以外の場合は COM エラー値を返します。

vtbl 14 HRESULT EnumSearches(IEnumExtraSearch** ppenum)

クライアントが利用可能な検索オブジェクトを列挙できるようにするインターフェイスへのポインターを要求します。

ppenumIEnumExtraSearch**out列挙子オブジェクトの IEnumExtraSearch インターフェイスへのポインターのアドレス。

戻り値

種類: HRESULT

成功した場合は S_OK を、それ以外の場合は COM エラー値を返します。

vtbl 15 HRESULT GetDefaultColumn(DWORD dwRes, DWORD* pSort, DWORD* pDisplay)

既定の並べ替え列および表示列を取得します。

dwResDWORDin予約済み。0 に設定します。
pSortDWORD*out既定の並べ替え列のインデックスを受け取る値へのポインター。
pDisplayDWORD*out既定の表示列のインデックスを受け取る値へのポインター。

戻り値

種類: HRESULT

成功した場合は S_OK を、それ以外の場合は COM エラー値を返します。

解説(Remarks)

利用者向けの注意

このメソッドが返す両方の列インデックスは、このフォルダーのフォルダービューを表示するアプリケーションによる使用を想定しています。
            <i>pSort</i> で指定される列は、フォルダー内の項目の並べ替えに使用すべき列です。任意の 2 つの項目の並べ替え順序を判定するには、それらの PIDL を <a href="/windows/desktop/api/shobjidl_core/nf-shobjidl_core-ishellfolder-compareids">CompareIDs</a> に渡します。列を指定するには、<b>CompareIDs</b> の 
            <i>lParam</i> パラメーターを 
            <i>pSort</i> が指す値に設定します。

ビューが項目を表す文字列を 1 つだけ表示する場合、その文字列は pDisplay で指定される列から取得すべきです。列インデックスと項目の PIDL を IShellFolder2::GetDetailsOf に渡して文字列を取得します。

実装者向けの注意

このメソッドは、名前空間拡張のフォルダーオブジェクト実装の一部です。通常はフォルダービューオブジェクトが呼び出し、Microsoft Windows Explorer の詳細ビューでフォルダー内の項目を並べ替えるためにどの列を使用すべきかをフォルダーオブジェクトに問い合わせます。たとえば、トランザクションログを表すフォルダーオブジェクトは、 pSort をトランザクション時刻を表示する列に設定するとよいでしょう。これにより、項目は名前順ではなく、トランザクションが発生した時刻順に並べ替えられます。

クライアントによっては、ツリービューに表示すべき名前を含む列のインデックスを要求するためにこのメソッドを呼び出す場合があります。 pDisplay を適切な列インデックスに設定してください。クライアントは IShellFolder2::GetDetailsOf を呼び出して表示名を取得します。

vtbl 16 HRESULT GetDefaultColumnState(DWORD iColumn, SHCOLSTATE* pcsFlags)

指定した列の既定の状態を取得します。

iColumnDWORDin列番号を指定する整数。
pcsFlagsSHCOLSTATE*out

既定の列の状態を示すフラグを含む値へのポインター。このパラメーターには、次のフラグの組み合わせを含めることができます。

SHCOLSTATE_TYPE_STR

文字列。

SHCOLSTATE_TYPE_INT

整数。

SHCOLSTATE_TYPE_DATE

日付。

SHCOLSTATE_ONBYDEFAULT

Windows Explorer の詳細ビューに既定で表示されるべきです。

SHCOLSTATE_SLOW

この情報の抽出には時間がかかる場合があるため、フォルダービューが列情報をバックグラウンドスレッドで非同期に抽出することを推奨します。

SHCOLSTATE_EXTENDED

フォルダーオブジェクトではなくハンドラーによって提供されます。

SHCOLSTATE_SECONDARYUI

ショートカットメニューには表示されませんが、[その他] ダイアログボックスに一覧表示されます。

SHCOLSTATE_HIDDEN

ユーザーインターフェイスに表示されません。

SHCOLSTATE_PREFER_VARCMP

並べ替え順序の取得に CompareIDs ではなく既定の並べ替えを使用します。

戻り値

種類: HRESULT

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

vtbl 17 HRESULT GetDetailsEx(ITEMIDLIST* pidl, PROPERTYKEY* pscid, VARIANT* pv)

プロパティセット識別子 (FMTID) とプロパティ識別子 (PID) で識別される、Shell フォルダー内の項目の詳細情報を取得します。

pidlITEMIDLIST*in親フォルダーからの相対的な、項目の PIDL。このメソッドは単一レベルの PIDL のみを受け付けます。この構造体は、ちょうど 1 つの SHITEMID 構造体とそれに続く終端のゼロを含む必要があります。この値を NULL にすることはできません。
pscidPROPERTYKEY*in列を識別する SHCOLUMNID 構造体へのポインター。
pvVARIANT*out要求された情報を含む VARIANT へのポインター。値は完全に型付けされています。プロパティシステムのプロパティに対して返される値は、そのプロパティ定義の typeInfo における legacyType 属性で指定された型に準拠する必要があります。

戻り値

種類: HRESULT

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

解説(Remarks)

この関数は IShellFolder2::GetDetailsOf のより堅牢なバージョンです。Shell フォルダーの Windows Explorer 詳細ビューに表示される情報へのアクセスを提供します。主な違いは、GetDetailsEx では、まず列インデックスを判定する必要なく、FMTID と PID 構造体で列を識別できる点です。

vtbl 18 HRESULT GetDetailsOf(ITEMIDLIST* pidl, DWORD iColumn, SHELLDETAILS* psd)

列インデックスで識別される、Shell フォルダー内の項目の詳細情報を取得します。

pidlITEMIDLIST*in情報を要求する対象の項目の PIDL。このメソッドは単一レベルの PIDL のみを受け付けます。この構造体は、ちょうど 1 つの SHITEMID 構造体とそれに続く終端のゼロを含む必要があります。このパラメーターが NULL に設定されている場合は、iColumn で指定された情報フィールドのタイトルが返されます。
iColumnDWORDin目的の情報フィールドの 0 から始まるインデックス。Windows Explorer の詳細ビューに表示される情報の列番号と同一です。
psdSHELLDETAILS*out情報を格納する SHELLDETAILS 構造体へのポインター。

戻り値

種類: HRESULT

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

解説(Remarks)

IShellFolder2::GetDetailsOf メソッドは GetDetailsOf と同一です。列インデックスを知る必要がない、より堅牢な項目情報の取得方法として、IShellFolder2::GetDetailsEx を使用してください。

IShellFolder2::GetDetailsOf メソッドは、Shell フォルダーの Windows Explorer 詳細ビューに表示される情報へのアクセスを提供します。詳細ビューに表示される列番号、見出し、情報は、IShellFolder2::GetDetailsOf のものと同一です。利用可能な情報フィールドとその列番号は、フォルダーによって異なる点に注意してください。pidlNULL に設定してこのメソッドを呼び出し、各列インデックスに関連付けられたタイトルを調べることで、利用可能なフィールドを列挙できます。これらのタイトルはローカライズされることがあり、すべてのロケールで同一とは限らない点に留意してください。

ファイルシステムフォルダーには、大きな標準的な情報フィールドのセットがあります。最初の 4 つのフィールドは、すべてのファイルシステムフォルダーで標準です。

列インデックス 列タイトル
0 名前
1 サイズ
2 種類
3 更新日時

ファイルシステムフォルダーは、多数の追加フィールドをサポートできます。ただし、それは必須ではなく、これらのフィールドに割り当てられる列インデックスは異なる場合があります。

各仮想フォルダーには、それぞれ独自の情報フィールドのセットがあります。通常、項目の表示名は列 0 にありますが、残りのフィールドの順序と内容は、その特定のフォルダーオブジェクトの実装に依存します。

vtbl 19 HRESULT MapColumnToSCID(DWORD iColumn, PROPERTYKEY* pscid)

列を適切なプロパティセット ID (FMTID) およびプロパティ ID (PID) に変換します。

iColumnDWORDin列 ID。
pscidPROPERTYKEY*outFMTID と PID を含む SHCOLUMNID 構造体へのポインター。

戻り値

種類: HRESULT

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

出典・ライセンス: 上記「公式ドキュメント」の内容は 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_IShellFolder2 "{93F2F68C-1D1B-11D3-A30E-00C04F79ABD1}"
#usecom global IShellFolder2 IID_IShellFolder2 "{}"
#comfunc global IShellFolder2_GetDefaultSearchGUID   13 var
#comfunc global IShellFolder2_EnumSearches           14 sptr
#comfunc global IShellFolder2_GetDefaultColumn       15 int,var,var
#comfunc global IShellFolder2_GetDefaultColumnState  16 int,var
#comfunc global IShellFolder2_GetDetailsEx           17 var,var,var
#comfunc global IShellFolder2_GetDetailsOf           18 var,int,var
#comfunc global IShellFolder2_MapColumnToSCID        19 int,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。