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

IShellItem2

COM
IID7e9fb0d3-919f-4307-ab2e-9b1860310c93継承元IShellItem自前メソッド開始 vtbl8

公式ドキュメント

IShellItem を拡張し、アイテムのさまざまなプロパティ値を取得するメソッドを提供します。新しいコードでアイテムを表現する場合は、IShellItem および IShellItem2 を使用することが推奨されます。

メソッド 13

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

vtbl 8 HRESULT GetPropertyStore(GETPROPERTYSTOREFLAGS flags, GUID* riid, void** ppv)

指定したプロパティストアフラグに対応するプロパティストアオブジェクトを取得します。

flagsGETPROPERTYSTOREFLAGSinプロパティストアオブジェクトを変更する GETPROPERTYSTOREFLAGS 定数。
riidGUID*in取得するオブジェクトの IID への参照。
ppvvoid**outこのメソッドが返るときに、IPropertyStore インターフェイスポインターのアドレスが格納されます。

戻り値

型: HRESULT

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

解説(Remarks)

注意 このメソッドがファイルのプロパティストアに対して呼び出された場合、そのファイルは IPropertyStore オブジェクトの存続期間中、開かれたままになります。
vtbl 9 HRESULT GetPropertyStoreWithCreateObject(GETPROPERTYSTOREFLAGS flags, IUnknown* punkCreateObject, GUID* riid, void** ppv)

CoCreateInstance ではなく、指定した ICreateObject を使用して、このメソッドを呼び出した Shell アイテムに関連付けられたプロパティハンドラーのインスタンスを作成します。

flagsGETPROPERTYSTOREFLAGSinプロパティストアオブジェクトを変更する GETPROPERTYSTOREFLAGS 定数。
punkCreateObjectIUnknown*in

ICreateObject 型の、低い権限でオブジェクトを作成するためのファクトリーへのポインター。

CreateObject メソッドは、COM オブジェクトのインスタンスを作成します。IShellItem2::GetPropertyStoreWithCreateObject の実装では、指定されたファイルの種類に対応する Shell 拡張であるプロパティハンドラーを作成するために、CoCreateInstance の代わりに CreateObject を使用します。プロパティハンドラーは、このメソッドが返すプロパティストア内の重要なプロパティの多くを提供します。

このメソッドが有用なのは、ICreateObject オブジェクトが別のプロセス内(INPROCSERVER ではなく LOCALSERVER として)で作成される場合であり、さらにこの別のプロセスが IShellItem2::GetPropertyStoreWithCreateObject を呼び出すプロセスよりも低い権限を持つ場合のみです。

riidGUID*in取得するオブジェクトの IID への参照。
ppvvoid**outこのメソッドが返るときに、要求された IPropertyStore インターフェイスポインターのアドレスが格納されます。

戻り値

型: HRESULT

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

解説(Remarks)

注意 このメソッドがファイルのプロパティストアに対して呼び出された場合、そのファイルは IPropertyStore オブジェクトの存続期間中、開かれたままになります。
vtbl 10 HRESULT GetPropertyStoreForKeys(PROPERTYKEY* rgKeys, DWORD cKeys, GETPROPERTYSTOREFLAGS flags, GUID* riid, void** ppv)

指定したプロパティキーに対応するプロパティストアオブジェクトを取得します。

rgKeysPROPERTYKEY*inPROPERTYKEY 構造体の配列へのポインター。各構造体には、プロパティストアの作成に使用される各プロパティの一意の識別子が含まれます。
cKeysDWORDinrgKeys が指す配列内の PROPERTYKEY 構造体の数。
flagsGETPROPERTYSTOREFLAGSinプロパティストアオブジェクトを変更する GETPROPERTYSTOREFLAGS 定数。
riidGUID*in取得するオブジェクトの IID への参照。
ppvvoid**outこのメソッドが返るときに、IPropertyStore インターフェイスポインターのアドレスが格納されます。

戻り値

型: HRESULT

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

解説(Remarks)

注意 このメソッドがファイルのプロパティストアに対して呼び出された場合、そのファイルは IPropertyStore オブジェクトの存続期間中、開かれたままになります。
vtbl 11 HRESULT GetPropertyDescriptionList(PROPERTYKEY* keyType, GUID* riid, void** ppv)

プロパティキーへの参照を指定して、プロパティ説明リストオブジェクトを取得します。

keyTypePROPERTYKEY*inPROPERTYKEY 構造体への参照。
riidGUID*in目的の IID への参照。
ppvvoid**outIPropertyDescriptionList インターフェイスポインターのアドレスが格納されます。

戻り値

型: HRESULT

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

vtbl 12 HRESULT Update(IBindCtx* pbc)

このアイテムにキャッシュされている情報が最新の状態に更新されるようにします。

pbcIBindCtx*inバインドコンテキストオブジェクトの IBindCtx インターフェイスへのポインター。

戻り値

型: HRESULT

成功した場合は S_OK を返します。失敗した場合はエラー値を返します。アイテムが存在しない場合の ERROR_FILE_NOT_FOUND を含みます。

vtbl 13 HRESULT GetProperty(PROPERTYKEY* key, PROPVARIANT* ppropvar)

指定したプロパティキーから PROPVARIANT 構造体を取得します。

keyPROPERTYKEY*inPROPERTYKEY 構造体への参照。
ppropvarPROPVARIANT*outPROPVARIANT 構造体へのポインターが格納されます。

戻り値

型: HRESULT

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

vtbl 14 HRESULT GetCLSID(PROPERTYKEY* key, GUID* pclsid)

指定したプロパティキーのクラス識別子(CLSID)の値を取得します。

keyPROPERTYKEY*inPROPERTYKEY 構造体への参照。
pclsidGUID*outCLSID 値へのポインター。

戻り値

型: HRESULT

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

vtbl 15 HRESULT GetFileTime(PROPERTYKEY* key, FILETIME* pft)

指定したプロパティキーの日付と時刻の値を取得します。

keyPROPERTYKEY*inPROPERTYKEY 構造体への参照。
pftFILETIME*out日付と時刻の値へのポインター。

戻り値

型: HRESULT

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

vtbl 16 HRESULT GetInt32(PROPERTYKEY* key, INT* pi)

指定したプロパティキーの Int32 値を取得します。

keyPROPERTYKEY*inPROPERTYKEY 構造体への参照。
piINT*outInt32 値へのポインター。

戻り値

型: HRESULT

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

vtbl 17 HRESULT GetString(PROPERTYKEY* key, LPWSTR* ppsz)

指定したプロパティキーの文字列値を取得します。

keyPROPERTYKEY*inPROPERTYKEY 構造体への参照。
ppszLPWSTR*outUnicode 文字列値へのポインター。

戻り値

型: HRESULT

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

vtbl 18 HRESULT GetUInt32(PROPERTYKEY* key, DWORD* pui)

指定したプロパティキーの UInt32 値を取得します。

keyPROPERTYKEY*inPROPERTYKEY 構造体への参照。
puiDWORD*outUInt32 値へのポインターを受け取ります。

戻り値

型: HRESULT

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

vtbl 19 HRESULT GetUInt64(PROPERTYKEY* key, ULONGLONG* pull)

指定したプロパティキーの UInt64 値を取得します。

keyPROPERTYKEY*inPROPERTYKEY 構造体への参照。
pullULONGLONG*outUInt64 値へのポインター。

戻り値

型: HRESULT

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

vtbl 20 HRESULT GetBool(PROPERTYKEY* key, BOOL* pf)

指定したプロパティキーのブール値を取得します。

keyPROPERTYKEY*inPROPERTYKEY 構造体への参照。
pfBOOL*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_IShellItem2 "{7E9FB0D3-919F-4307-AB2E-9B1860310C93}"
#usecom global IShellItem2 IID_IShellItem2 "{9AC9FBE1-E0A2-4AD6-B4EE-E212013EA917}"
#comfunc global IShellItem2_GetPropertyStore                  8 int,var,sptr
#comfunc global IShellItem2_GetPropertyStoreWithCreateObject  9 int,sptr,var,sptr
#comfunc global IShellItem2_GetPropertyStoreForKeys           10 var,int,int,var,sptr
#comfunc global IShellItem2_GetPropertyDescriptionList        11 var,var,sptr
#comfunc global IShellItem2_Update                            12 sptr
#comfunc global IShellItem2_GetProperty                       13 var,var
#comfunc global IShellItem2_GetCLSID                          14 var,var
#comfunc global IShellItem2_GetFileTime                       15 var,var
#comfunc global IShellItem2_GetInt32                          16 var,var
#comfunc global IShellItem2_GetString                         17 var,var
#comfunc global IShellItem2_GetUInt32                         18 var,var
#comfunc global IShellItem2_GetUInt64                         19 var,var
#comfunc global IShellItem2_GetBool                           20 var,var
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。