IApplicationDocumentLists
COM公式ドキュメント
アプリケーションがジャンプリスト内の最近使ったカテゴリ(Recent)またはよく使うカテゴリ(Frequent)の内容を取得できるようにするメソッドを公開します。
解説(Remarks)
実装するタイミング
このインターフェイスの実装は、CLSID_ApplicationDocumentLists として Windows に用意されています。このインターフェイスはサードパーティによって実装されるものではありません。使用するタイミング
アプリケーションは、ジャンプリストの Recent リストまたは Frequent リストを取得したい場合に、このインターフェイスのメソッドを呼び出します。これらのリストは、SHAddToRecentDocs の呼び出しによって生成されます。この呼び出しは、明示的に行われる場合と、Windows エクスプローラーからファイルが開かれたとき、または共通ファイルダイアログを使用してファイルの開く・保存・作成が行われたときにシステムによって行われる場合があります。IApplicationDocumentLists は、自動生成される Recent カテゴリまたは Frequent カテゴリでのみ使用されます。ユーザーがジャンプリストにピン留めした項目の一覧を取得することはできません。その一覧はプログラムから操作できないため、プログラムから取得することもできません。それは完全にユーザーの制御下にあります。IApplicationDocumentLists は、カスタムカテゴリやタスクリストにアクセスすることもできません。
メソッド 2
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
取得対象となる配布先リストを持つアプリケーションに対して、一意の Application User Model ID(AppUserModelID)を指定します。このメソッドは省略可能です。
| pszAppID | LPWSTR | in | タスクバーボタンの表現がジャンプリストを受け取るプロセスの AppUserModelID へのポインター。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
アプリケーションが明示的な AppUserModelID を持つ場合、GetList を呼び出す前にこのメソッドを呼び出す必要があります。
オブジェクトの SetAppID メソッドによって AppUserModelID が指定されると、その AppUserModelID はオブジェクトの有効期間中そのオブジェクトに保存されます。ただし、別の SetAppID の呼び出しによって上書きされない場合に限ります。
一部のアプリケーションは明示的な AppUserModelID を宣言しないため、このメソッドを呼び出すべきではありません。その場合、アプリケーションの ID は IApplicationDocumentLists::GetList が呼び出されたときに推定されます。ただし、そうした計算を避けることによるパフォーマンス上の利点があるため、カスタムジャンプリストを提供するアプリケーションは 明示的な AppUserModelID を使用することが推奨されます。
ジャンプリストの Recent カテゴリまたは Frequent カテゴリに列挙されている配布先のコレクションを表すオブジェクトを取得します。
| listtype | APPDOCLISTTYPE | in | 配布先の一覧をどのカテゴリから取得するかを指定する、次のいずれかの値。 ADLT_RECENT (0x0)0x0。Recent カテゴリ。最近アクセスされた項目を列挙します。 ADLT_FREQUENT (0x1)0x1。Frequent カテゴリ。最も多くアクセスされた項目を列挙します。 |
| cItemsDesired | DWORD | in | listtype で指定したリストから取得する項目の数。リスト全体を取得するには、このパラメーターに 0 を設定します。 |
| riid | GUID* | in | ppv を通じて取得するインターフェイスの IID への参照。通常は IID_IObjectArray または IID_IEnumObjects です。 |
| ppv | void** | out | このメソッドが返るとき、riid で要求したインターフェイスポインターが格納されます。これは通常、IObjectArray または IEnumObjects であり、リストから取得された項目を表す IShellItem オブジェクトまたは IShellLink オブジェクト(あるいはその両方が混在したもの)のコレクションを表します。 |
戻り値
型: HRESULT
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
1 つの項目が Recent リストと Frequent リストの両方に表示されることがあります。
ユーザーが Recent カテゴリまたは Frequent カテゴリ内の項目をピン留めすると、ジャンプリスト内での重複を避けるため、その項目は元のカテゴリには表示されなくなります。ただし、その項目はこのメソッドによって引き続き返されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IApplicationDocumentLists "{3C594F9F-9F30-47A1-979A-C9E83D3D0A06}" #usecom global IApplicationDocumentLists IID_IApplicationDocumentLists "{86BEC222-30F2-47E0-9F25-60D11CD75C28}" #comfunc global IApplicationDocumentLists_SetAppID 3 wstr #comfunc global IApplicationDocumentLists_GetList 4 int,int,var,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。#define global IID_IApplicationDocumentLists "{3C594F9F-9F30-47A1-979A-C9E83D3D0A06}" #usecom global IApplicationDocumentLists IID_IApplicationDocumentLists "{86BEC222-30F2-47E0-9F25-60D11CD75C28}" #comfunc global IApplicationDocumentLists_SetAppID 3 wstr #comfunc global IApplicationDocumentLists_GetList 4 int,int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※#usecom 末尾は CoCreateInstance 用のクラスID(コクラスCLSID, SDKから自動取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。 ; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。