ジャンプリストの変更 - よく知られたカテゴリの追加

ジャンプリストは、Windows 7 のタスクバーに組み込まれた新機能です。 ジャンプリストの知られたカテゴリ (Known category) である「最近使ったファイルリスト」と「よく使うファイルリスト」を表示する方法と、 いつそれらを使い分けるかという、変更基準について説明します。

「最近使ったファイル」と「よく使うファイル」の使い分け

Windows は「最近使ったファイル」リストと「よく使うファイル」リストを管理しています。 それらの詳細は、最近使ったファイルとよく使うファイルリスト を参照してください。 ここではそれをジャンプリストでどのように使い分けるか説明します。

これは直感的に納得しやすいです。マイクロソフトのガイドラインでは、「両方同時にはジャンプリストに組み入れるべきではない」としています。

その上で次のようにしています。

  • Word やメモ帳などのファイルを編集するソフトでは、「最近使ったファイル」リストをジャンプリストに組み入れる
  • Windows Media Player などの同じファイルを何度も参照する場合は「よく使うファイル」リストをジャンプリストに組み入れる

例えば、Windows Media Player などでは好きな音楽はなんども繰り返し聴くでしょうから、ジャンプリストに「最近使ったファイル」よりも 「よく使うファイル」のリストを入れるべき、ということです。

デフォルトは「最近使ったファイル」

ファイル拡張子とプログラムが関連付けされている場合、通常ファイルが開かれるとそのファイルと関連付けられたプログラムの、 よく使うファイル、最近使ったファイルのリストにファイルが自動的に登録されます。(詳しい条件は 最近使ったファイルとよく使うファイルリスト を参照してください)

ファイル拡張子とプログラムが関連付けされている場合、デフォルトでは「最近使ったファイル」リストがジャンプリストに表示されます。

ジャンプリストの変更 - よく知られたカテゴリの追加

従って、「最近使ったファイル」リストをジャンプリストに登録したいだけなら、自分のプログラムをファイル拡張子と関連付けしておくだけで良いです。 プログラムから特に何もする必要はありません。

「よく使うファイル」リストをジャンプリストに登録する

ジャンプリストには最近使ったファイルリストではなく、「よく使うファイル」リストを表示することもできます。

ジャンプリストの変更 - よく知られたカテゴリの追加

もしあなたのプログラムが、よく使うファイルリストをジャンプリストに表示すべき、プログラムである場合、次の方法でジャンプリストの内容を変更することができます。

ICustomDestinationList インターフェイスの、BeginList、AppendKnownCategory 及び CommitList メソッドを呼び出します。 AppendKnownCategory メソッドのパラメータとして、「よく使うファイルリスト」を表す KDC_FREQUENT を渡します。 最後に CommitList メソッドを呼び、変更を確定すれば OK です。

コードリストは次のようになります。

#include <windows.h>
#include <Shobjidl.h>
#include <Shlobj.h>

// ...


ICustomDestinationList* pJumpList = NULL;

// COM の初期化
CoInitializeEx(NULL, COINIT_APARTMENTTHREADED);

// インスタンスの作成
CoCreateInstance(
     CLSID_DestinationList,
     NULL,
     CLSCTX_INPROC_SERVER,
     IID_PPV_ARGS(&pJumpList)
);

// カテゴリの追加
UINT uMaxSlots;
IObjectArray* pObjArray = NULL;
pJumpList->BeginList(
     &uMaxSlots, 
     IID_PPV_ARGS(&pObjArray));

pJumpList->AppendKnownCategory(KDC_FREQUENT);
//pJumpList->AppendKnownCategory(KDC_RECENT);
pJumpList->CommitList();


// クリーンアップ
pJumpList->Release();
CoUninitialize();

尚、ここでは COM の利用の基本として CoInitializeEx やら CoUninitialize 等を呼び出しています。 COM プログラミングが良くわからない、という方は COM プログラミング入門 などを参考にしてください。

以上で、ジャンプリストに最近使ったファイルリストの代わりに、よく使うファイルリストが表示されたはずです。

ジャンプリストの変更 - よく知られたカテゴリの追加

マイクロソフトのガイドラインとして両方一度に使うべきでない、とあるので、AppendKnownCategory(KDC_FREQUENT) を呼び出したことで、 デフォルトの「最近使ったファイルリスト」は表示されなくなります。

もしどうしても両方表示したい、というなら 上のソースコードでコメントアウトしてある部分の AppendKnownCategory(KDC_RECENT) を呼び出せば、 両方表示されるようになります。

ここまでお読みいただき、誠にありがとうございます。SNS 等でこの記事をシェアしていただけますと、大変励みになります。どうぞよろしくお願いします。

© 2024 Web/DB プログラミング徹底解説