IEnumShellItems
COM公式ドキュメント
IShellItem インターフェースの列挙を公開します。このインターフェースは通常、IEnumShellItems メソッドを呼び出すことで取得します。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
vtbl 3 HRESULT Next(DWORD celt, IShellItem** rgelt, DWORD* pceltFetched)
列挙から 1 つ以上の IShellItem インターフェースの配列を取得します。
| celt | DWORD | in | rgelt パラメーターで参照される配列の要素数です。 |
| rgelt | IShellItem** | out | 列挙された 1 つまたは複数の項目を受け取る IShellItem インターフェースへのポインターの配列のアドレスです。呼び出し側アプリケーションは、IUnknown::Release メソッドを呼び出して IShellItem インターフェースを解放する責任があります。 |
| pceltFetched | DWORD* | outoptional | 正常に取得された IShellItem インターフェースの数を受け取る値へのポインターです。このカウントは celt パラメーターで指定された値より小さい場合があります。このパラメーターは、celt が 1 の場合に限り、エントリ時に NULL にできます。なぜなら、その場合メソッドは 1 項目だけを取得して S_OK を返すか、0 項目で S_FALSE を返すかのいずれかしかないためです。 |
戻り値
種類: HRESULT
このメソッドは次の値のいずれかを返すことがあります。
| 戻り値 | 説明 |
|---|---|
| 少なくとも 1 つの IShellItem インターフェースが取得された場合。 | |
| 列挙内に IShellItem インターフェースがこれ以上ない場合。 | |
| その他の理由で関数が失敗した場合はエラー値を返します。 |
列挙内の指定された数の IShellItem インターフェースをスキップします。インターフェースを取得する際に使用します。
| celt | DWORD | in | スキップする IShellItem インターフェースの数です。 |
戻り値
種類: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
vtbl 5 HRESULT Reset()
列挙内で取得済みの IShellItem インターフェースの内部カウントをリセットします。
戻り値
種類: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
vtbl 6 HRESULT Clone(IEnumShellItems** ppenum)
現在の列挙のコピーを取得します。
| ppenum | IEnumShellItems** | out | この列挙のコピーを受け取るポインターのアドレスです。 |
戻り値
種類: HRESULT
このメソッドが成功すると S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
出力引数:
#define global IID_IEnumShellItems "{70629033-E363-4A28-A567-0DB78006E6D7}" #usecom global IEnumShellItems IID_IEnumShellItems "{}" #comfunc global IEnumShellItems_Next 3 int,sptr,var #comfunc global IEnumShellItems_Skip 4 int #comfunc global IEnumShellItems_Reset 5 #comfunc global IEnumShellItems_Clone 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IEnumShellItems "{70629033-E363-4A28-A567-0DB78006E6D7}" #usecom global IEnumShellItems IID_IEnumShellItems "{}" #comfunc global IEnumShellItems_Next 3 int,sptr,sptr #comfunc global IEnumShellItems_Skip 4 int #comfunc global IEnumShellItems_Reset 5 #comfunc global IEnumShellItems_Clone 6 sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。