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

ICategoryProvider

COM
IID9af64809-5864-4c26-a720-c1f78c086ee3継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IShellFolder に登録されたカテゴライザーの一覧を公開します。

メソッド 6

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

vtbl 3 HRESULT CanCategorizeOnSCID(PROPERTYKEY* pscid)

列をカテゴリとして使用できるかどうかを判定します。

pscidPROPERTYKEY*in列を識別する SHCOLUMNID 構造体へのポインターです。S_OK が返された場合にのみ有効です。この構造体に含まれる GUID は、その後 ICategoryProvider::CreateCategory に渡されます。

戻り値

型: HRESULT

列をカテゴリとして使用できる場合は S_OK を、使用できない場合は S_FALSE を返します。

解説(Remarks)

システムフォルダービューオブジェクトをカテゴリビュー(Show in Groups)で使用する場合、このメソッドが S_OK を返す列のタイトルが、Arrange Icons By サブメニューの上部に表示されます。

vtbl 4 HRESULT GetDefaultCategory(GUID* pguid, PROPERTYKEY* pscid)

フォルダーが既定のグループ化を上書きできるようにします。

pguidGUID*out使用されません。
pscidPROPERTYKEY*outこのメソッドが返るときに、SHCOLUMNID 構造体へのポインターが格納されます。

戻り値

型: HRESULT

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

戻り値 説明
S_FALSE
既定のグループがありません。

解説(Remarks)

ICategoryProvider::GetDefaultCategory は、既定のカテゴライザーが使用する SHCOLUMNID 構造体を返します。既定のグループがサポートされていない場合、このメソッドは S_FALSE を返します。

ICategoryProvider::GetDefaultCategory は、フォルダーが最初に開かれたときにのみ呼び出されます。それ以降は、ユーザーのグループ化の選択が、ビューの状態を格納するプロパティバッグにキャッシュされます。フォルダーが最初に開かれた後に ICategoryProvider::GetDefaultCategory の呼び出しを強制するには、Shell および ShellNoRoam レジストリキーを削除する必要があります。これらは次の場所にあります。

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            Shell
            ShellNoRoam
vtbl 5 HRESULT GetCategoryForSCID(PROPERTYKEY* pscid, GUID* pguid)

指定されたシェル列に使用するカテゴライザーを表す GUID を取得します。

pscidPROPERTYKEY*inSHCOLUMNID 構造体へのポインターです。
pguidGUID*outこのメソッドが返るときに、pscid が指す SHCOLUMNID に使用するカテゴライザーを表す GUID へのポインターが格納されます。

戻り値

型: HRESULT

成功した場合は S_OK を、失敗した場合は S_FALSE を返します。

vtbl 6 HRESULT EnumCategories(IEnumGUID** penum)

カテゴリを表す GUID の一覧の列挙子を取得します。

penumIEnumGUID**outこのメソッドが返るときに、カテゴリを表す GUID の一覧を指定する IEnumGUID インターフェースへのポインターのアドレスが格納されます。

戻り値

型: HRESULT

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

解説(Remarks)

システムフォルダービューオブジェクトの場合、ICategoryProvider::EnumCategories は、列に関連付けられていない追加のカテゴリを取得するために使用されます。カテゴリ GUID の一覧が penum を通じて返されると、UI は各カテゴリの名前の取得を試みます。その名前は、カテゴリの選択肢として表示されます。Windows XP の場合、その選択肢はフォルダーの Arrange Icons By メニューに表示されます。

vtbl 7 HRESULT GetCategoryName(GUID* pguid, LPWSTR pszName, DWORD cch)

指定されたカテゴリの名前を取得します。

pguidGUID*inGUID へのポインターです。
pszNameLPWSTRoutこのメソッドが返るときに、カテゴリの名前を受け取る文字列へのポインターが格納されます。
cchDWORDin文字列内の文字数を受け取る整数です。

戻り値

型: HRESULT

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

vtbl 8 HRESULT CreateCategory(GUID* pguid, GUID* riid, void** ppv)

カテゴリオブジェクトを作成します。

pguidGUID*inカテゴリオブジェクトの GUID へのポインターです。
riidGUID*in返すオブジェクトの識別子です。現在、システムフォルダービューオブジェクトでサポートされている唯一の値は IID_ICategorizer です。
ppvvoid**outこのメソッドが返るときに、カテゴリオブジェクトへのポインターのアドレスが格納されます。

戻り値

型: 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_ICategoryProvider "{9AF64809-5864-4C26-A720-C1F78C086EE3}"
#usecom global ICategoryProvider IID_ICategoryProvider "{}"
#comfunc global ICategoryProvider_CanCategorizeOnSCID  3 var
#comfunc global ICategoryProvider_GetDefaultCategory   4 var,var
#comfunc global ICategoryProvider_GetCategoryForSCID   5 var,var
#comfunc global ICategoryProvider_EnumCategories       6 sptr
#comfunc global ICategoryProvider_GetCategoryName      7 var,var,int
#comfunc global ICategoryProvider_CreateCategory       8 var,var,sptr
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。