タスク バーの拡張機能
Windows 7 の時点で、タスク バーは、可能な限り迅速かつ効率的に作業を行うユーザーを取得する原則の下で大幅に拡張されています。 そのためには、ユーザーが実行する必要があるアプリケーション ウィンドウ、ファイル、コマンドが、以前に散在した情報ソースとコントロールを統合する 1 つのタスク バー ボタンに一元化されました。 ユーザーは、一般的なタスク、最近の頻繁なファイル、アラート、進行状況通知、個々のドキュメントまたはタブのサムネイルをすべて 1 か所で検索できるようになりました。
- 統合された起動と切り替え
- ジャンプ リスト
- 変換先
- タスク
- ジャンプ リストのカスタマイズ
- サムネイル ツールバー
- アイコン オーバーレイ
- プログレス バー
- デスクバンド
- 通知領域
- [縮小表示]
- 関連トピック
統合された起動と切り替え
Windows 7 タスク バーの時点では、サイド リンク バーは別のツール バーではなくなりました。 クイック 起動に通常含まれるランチャー ショートカットがタスク バー自体にピン留めされ、現在実行中のアプリケーション用のボタンが混ざり合っています。 ユーザーがピン留めされたランチャー ショートカットからアプリケーションを起動すると、アプリケーションが実行されている限り、アイコンはアプリケーションのタスク バー ボタンに変換されます。 ユーザーがアプリケーションを閉じると、ボタンはアイコンに戻ります。 ただし、ランチャーショートカットと実行中のアプリケーションのボタンは、Windows 7タスクバーボタンとは異なる形式です。
新しいインストールでは、少数のアプリケーションセットが既定でピン留めされます。 これら以外の場合は、ユーザーのみがさらにアプリケーションをピン留めできます。アプリケーションによるプログラムによるピン留めは許可されていません。
サイド リンク バーの [デスクトップの表示] 機能がタスク バーの右端に表示されるようになりました。 この領域にカーソルを合わせると、すべてのアクティブなウィンドウが透明になり、デスクトップが表示されます。 領域をクリックすると、すべてのウィンドウを最小化し、デスクトップに切り替えるという使い慣れた操作が実行されます。
アプリケーションの実行中、タスク バー ボタンは、次のすべての機能にアクセスするための 1 つの場所になります。それぞれについて以下で詳しく説明します。
- タスク: 一般的なアプリケーション コマンド。アプリケーションが実行されていない場合でも表示されます。
- 宛先: アプリケーションに固有の最近頻繁にアクセスされるファイル。
- サムネイル: 個々のタブとドキュメントの切り替えターゲットを含むウィンドウ切り替え。
- サムネイル ツールバー: サムネイル自体からの基本的なアプリケーション コントロール。
- 進行状況バー と アイコン オーバーレイ: 状態通知。
タスク バー ボタンは、ランチャー、1 つのアプリケーション ウィンドウ、またはグループを表すことができます。 アプリケーション ユーザー モデル ID (AppUserModelID) と呼ばれる識別子が各グループに割り当てられます。 AppUserModelID を指定すると、標準タスク バーのグループ化をオーバーライドできます。これにより、ウィンドウが同じグループのメンバーになり、それ以外の場合はそのように見えない場合に同じグループのメンバーになります。 グループの各メンバーには、グループのタスク バー ボタンの上にマウス ポインターを置いたときに表示されるサムネイル ポップアップに個別のプレビューが表示されます。 グループ化自体は省略可能であることに注意してください。
Windows 7 の時点で、タスク バー ボタンをドラッグ アンド ドロップ操作でユーザーが再配置できるようになりました。
Note
サイド リンク バー の UI はなくなりましたが、サイド リンク バー フォルダー (FOLDERID_QuickLaunch) は下位互換性のために引き続き使用できます。 ただし、新しいアプリケーションでは、インストール中にサイド リンク バーにアイコンを追加するように求めるべきではありません。
詳細については、「 アプリケーション ユーザー モデル ID (AppUserModelIDs)」を参照してください。
ジャンプ リスト
ユーザーは通常、ドキュメントにアクセスしたり、プログラム内でタスクを実行したりする目的でプログラムを起動します。 ゲーム プログラムのユーザーは、最初からゲームを再起動するのではなく、保存したゲームにアクセスしたり、特定のキャラクターとして起動したりしたい場合があります。 ユーザーが最終的な目標をより効率的に達成できるように、アプリケーションに関連付けられている 宛先 と一般的な タスク の一覧が、そのアプリケーションのタスク バー ボタン (および同等の スタート メニュー エントリ) に添付されます。 これは、アプリケーションのジャンプ リストです。 ジャンプ リストは、タスク バー ボタンがランチャーの状態 (アプリケーションが実行されていない) か、1 つ以上のウィンドウを表しているかに関係なく使用できます。 次の図に示すように、タスク バー ボタンを右クリックすると、アプリケーションのジャンプ リストが表示されます。
既定では、標準のジャンプ リストには、最近のアイテムとピン留めされたアイテムの 2 つのカテゴリが含まれていますが、UI にはコンテンツを含むカテゴリのみが表示されるため、最初の起動時にはどちらのカテゴリも表示されないためです。 常に表示されるのは、アプリケーション起動アイコン (アプリケーションのより多くのインスタンスを起動する場合)、タスク バーからアプリケーションをピン留めまたはピン留め解除するオプション、開いているウィンドウの [閉じる] コマンドです。
変換先
最近のカテゴリと頻繁なカテゴリには、宛先が含まれていると見なされます。 コピー先 (通常はファイル、ドキュメント、または URL) は、編集、参照、表示などを行うことができます。 行き先は、アクションではなくモノと考えてください。 通常、宛先は、 IShellItem または IShellLink によって表されるシェル名前空間内の項目 です。 宛先リストのこれらの部分は、[ スタート ] メニューの最近使用したドキュメント リスト (既定では表示されません) とよく使用されるアプリケーション リストに似ていますが、アプリケーションに固有であるため、ユーザーにとってより正確で便利です。 宛先リストで使用される結果は、 SHAddToRecentDocs への呼び出しによって計算されます。 ユーザーがWindows エクスプローラーからファイルを開くか、共通のファイル ダイアログを使用してファイルを開いたり、保存したり、作成したりすると、SHAddToRecentDocs が自動的に呼び出されるため、多くのアプリケーションは、そのパーツに対する操作を行わずに、新しい項目を宛先リストに表示することに注意してください。
変換先の起動は、[ Open With ] コマンドを使用して項目を起動するのとよく似ています。 アプリケーションが起動し、その宛先が読み込まれ、使用する準備が整います。 宛先リスト内の項目は、リストからメール メッセージなどのドロップ先にドラッグすることもできます。 これらの項目を宛先リストに一元化することで、ユーザーがはるかに速く行きたい場所を取得します。これが目標です。
アイテムが宛先リストの [最近 ] カテゴリ (または後のセクションで説明した [頻繁な カテゴリ] または カスタム カテゴリ ) に表示される場合、ユーザーは、クイック アクセスのためにアイテムが常にリスト内にあることを確認できます。 これを行うには、その項目をリストにピン留めし、その項目を ピン留め されたカテゴリに追加します。 ユーザーがターゲットをアクティブに操作している場合、ユーザーは簡単にコピー先を望んでいるので、アプリケーションの宛先リストにピン留めします。 ユーザーの作業が完了したら、項目のピン留めを解除するだけです。 このユーザー コントロールでは、リストが整理され、関連性が維持されます。
変換先リストは、[ スタート ] メニューのアプリケーション固有のバージョンと見なすことができます。 コピー先リストはショートカット メニューではありません。 コピー先リストの各項目は、独自のショートカット メニューで右クリックできます。
API
- IApplicationDestinations::RemoveDestination
- IApplicationDestinations::RemoveAllDestinations
- IApplicationDocumentLists::GetList
- SHAddToRecentDocs
タスク
ジャンプ リストのもう 1 つの組み込み部分は 、[タスク] カテゴリです。 宛先はモノですが、タスクはアクションであり、この場合はアプリケーション固有のアクションです。 別の言い方をすると、変換先は名詞で、タスクは動詞です。 通常、タスクは、アプリケーションによってトリガーできる特定の機能を示すコマンド ライン引数を持つ IShellLink 項目です。 ここでも、アプリケーションに関連する情報を実用的な限り一元化するという考え方です。
アプリケーションは、プログラムの機能と、ユーザーがそれらに対して行うことを期待される重要な事柄の両方に基づいてタスクを定義します。 タスクを動作させるには、アプリケーションを実行する必要がないという点で、コンテキストフリーである必要があります。 また、メール メッセージを作成したり、メール プログラムで予定表を開いたり、ワード プロセッサで新しいドキュメントを作成したり、特定のモードでアプリケーションを起動したり、サブコマンドの 1 つを起動したりするなど、通常のユーザーがアプリケーションで実行する統計的に最も一般的なアクションである必要があります。 アプリケーションでは、標準ユーザーが必要としない高度な機能や、登録などの 1 回限りのアクションでメニューを乱雑にしないでください。 アップグレードや特別オファーなどのプロモーションアイテムにはタスクを使用しないでください。
タスク リストは静的にすることを強くお勧めします。 アプリケーションの状態または状態に関係なく、同じままにする必要があります。 リストを動的に変更することは可能ですが、これにより、移行先リストのその部分が変更されるとは思わないユーザーが混乱する可能性があることを考慮する必要があります。
API
ジャンプ リストのカスタマイズ
アプリケーションは、独自のカテゴリを定義し、ジャンプ リストの標準の 最近 のカテゴリと 頻繁 なカテゴリの代わりに追加できます。 アプリケーションは、アプリケーションのアーキテクチャと使用目的に基づいて、これらのカスタム カテゴリ内の独自の宛先を制御できます。 次のスクリーン ショットは、履歴カテゴリを含むカスタム ジャンプ リストを示しています。
アプリケーションがカスタム カテゴリの提供を決定した場合、そのアプリケーションはカスタム カテゴリを設定する責任を負います。 カテゴリの内容は、ユーザー固有で、ユーザーの履歴、アクション、またはその両方に基づく必要がありますが、カスタム カテゴリを通じて、アプリケーションは追跡する内容と無視する内容を、アプリケーション オプションに基づいて判断できます。 たとえば、オーディオ プログラムでは、最近再生したアルバムのみを含め、最近再生された個々のトラックを無視することができます。
ユーザーがリストから項目 (常にユーザー オプション) を削除した場合、アプリケーションはその項目を尊重する必要があります。 また、アプリケーションでは、リスト内の項目が有効であること、または削除された場合に正常に失敗することも確認する必要があります。 個々の項目またはリストの内容全体をプログラムで削除できます。
宛先リスト内の項目の最大数は、表示解像度やフォント サイズなどのさまざまな要因に基づいてシステムによって決定されます。 すべてのカテゴリのすべての項目に十分な領域がない場合は、下から切り捨てられます。
API
サムネイル ツールバー
ユーザーがアプリケーションのウィンドウを復元またはアクティブ化せずに特定のウィンドウのキー コマンドにアクセスできるようにするには、アクティブなツール バー コントロールをそのウィンドウのサムネイル プレビューに埋め込むことができます。 たとえば、Windows メディア プレーヤーは、再生、一時停止、ミュート、停止などの標準的なメディア トランスポート コントロールを提供する場合があります。 次の図に示すように、UI はサムネイルのすぐ下にこのツール バーを表示します。このツール バーの一部はカバーされていません。
このツール バーは、使い慣れた標準ツール バーの共通コントロールです。 最大 7 つのボタンがあります。 各ボタンの ID、画像、ツールヒント、および状態は構造で定義され、タスク バーに渡されます。 アプリケーションは、現在の状態で必要に応じて、サムネイル ツール バーのボタンの表示、有効化、無効化、または非表示を切り替えることができます。
サムネイルを表示するスペースと表示するサムネイルの数が限られているため、アプリケーションでは特定のツール バー サイズが保証されません。 スペースが制限されている場合、ツールバーのボタンは右から左に切り捨てられます。 したがって、ツール バーを設計するときは、ボタンに関連付けられているコマンドに優先順位を付け、最も重要なコマンドが最初に来て、スペースの問題が原因で削除される可能性が最も低いようにする必要があります。
Note
アプリケーションがウィンドウを表示すると、そのタスク バー ボタンがシステムによって作成されます。 ボタンが配置されると、タスク バーは タスク バーボタンの作成済み メッセージをウィンドウに送信します。 その値は、 RegisterWindowMessage(L("TaskButtonCreated") を呼び出すことによって計算されます。 ITaskbarList3 メソッドを呼び出す前に、そのメッセージをアプリケーションで受信する必要があります。
API
- ITaskbarList3::ThumbBarAddButtons
- ITaskbarList3::ThumbBarSetImageList
- ITaskbarList3::ThumbBarUpdateButtons
- THUMBBUTTON
アイコン オーバーレイ
アプリケーションは、ボタンに小さなオーバーレイを表示することで、タスク バー ボタンを通じて特定の通知と状態をユーザーに伝えることができます。 これらのオーバーレイは、ショートカットやセキュリティ通知に使用される既存のオーバーレイの種類に似ています。ボタンの右下隅に表示されます。 オーバーレイ アイコンを表示するには、次のスクリーン ショットに示すように、タスク バーが既定の大きなアイコン モードである必要があります。
アイコン オーバーレイは状況のコンテキスト通知として機能し、別の通知領域の状態アイコンがその情報をユーザーに伝える必要性を否定することを目的としています。 たとえば、現在通知領域に表示されている Microsoft Outlook の新しいメールの状態は、タスク バー ボタンのオーバーレイを通じて表示できるようになりました。 ここでも、開発サイクル中に、アプリケーションに最適な方法を決定する必要があります。 オーバーレイ アイコンは、ネットワークの状態、メッセンジャーの状態、新しいメールなどの重要な、長期的な状態または通知を提供することを目的としています。 ユーザーは、常に変化するオーバーレイやアニメーションを表示しないでください。
1 つのオーバーレイがタスク バー ボタンにオーバーレイされ、個々のウィンドウのサムネイルには表示されないため、これはウィンドウ単位ではなくグループごとの機能です。 オーバーレイ アイコンの要求は、タスク バー グループ内の個々のウィンドウから受信できますが、キューには入りません。 最後に受け取ったオーバーレイが表示されます。
API
プログレス バー
タスク バー ボタンを使用すると、進行状況バーを表示できます。 これにより、ウィンドウは、そのユーザーがウィンドウ自体に切り替える必要なく、ユーザーに進行状況情報を提供できます。 ユーザーは、他のウィンドウで発生している 1 つ以上の操作の進行状況をひとめで確認しながら、別のアプリケーションで生産性を維持できます。 タスク バー ボタンの進行状況バーには、ウィンドウ自体のより詳細な進行状況インジケーターが反映されることを目的としています。 この機能を使用して、ファイル のコピー、ダウンロード、インストール、メディアの書き込み、または一定期間かかる操作を追跡できます。 この機能は、Web ページの読み込みやドキュメントの印刷など、通常の周辺機器操作では使用できません。 その種類の進行状況は、ウィンドウのステータス バーに引き続き表示されます。
タスク バー ボタンの進行状況バーは、使い慣れたプログレス バー コントロールと同様のエクスペリエンスです。 操作の完了した割合に基づいて進行状況を決定するか、不確定なマーキー スタイルの進行状況を表示して、残り時間の予測なしで操作が進行中であることを示すことができます。 また、操作が一時停止されているか、エラーが発生し、ユーザーの介入が必要であることを示すこともできます。
API
デスクバンド
Windows 7 より前のバージョンのWindowsでは、サムネイル ツール バー機能に似たものを、タスク バーでホストされているツールバーである deskband を使用して実現できます。 たとえば、Windows メディア プレーヤーは、標準的なボタンではなく、トランスポート コントロールのセットとしてタスク バーに最小化できます。 Windows 7 では、デスクバンドは引き続き実装でき、サムネイル ツールバーはそれらをすべて置き換えることを意図したものではありません。 すべてのアプリケーションがサムネイル ツール バーに適しているわけではありません。また、デスクバンドや宛先リストのタスクなどの別のソリューションが、アプリケーションに適した答えになる場合があります。開発サイクルの一環として、アプリケーションに最適なソリューションを決定する必要があります。 ただし、デスクバンドでは、半透明 ("glass") が有効なWindows Aero と IDeskBand2 インターフェイスをサポートする必要があることに注意してください。
API
通知領域
通知領域に変更が加わり、タスク バーに表示されるアイコンをより詳細に制御できます。 すべての通知アイコンが既定で非表示になり、その可視性をプログラムで制御することはできません。 タスク バーに表示される通知アイコンを選択できるのは、ユーザーだけです。 通知バルーンが表示されると、アイコンは一時的に表示されますが、ユーザーは通知を無音にすることもできます。 そのため、タスク バー ボタンのアイコン オーバーレイは、アプリケーションがその情報をユーザーに伝える場合に魅力的な選択肢になります。
サムネイル
Windows Vista で、アプリケーションのタスク バー ボタンをポイントすると、実行中のウィンドウを表すサムネイルが表示されます。 タスク バーがアプリケーションのウィンドウを折りたたんだ場合、サムネイルはスタックとして表示されてこれを表しますが、サムネイル自体にはアクティブなウィンドウのみが表示されます。
Windows 7 では、グループの各メンバーが個別のサムネイルとして表示され、現在はスイッチ ターゲットでもあります。 アプリケーションは、その子 (真の子ウィンドウ、個々のドキュメント、タブなど) を定義し、タスク バーに通常表示されない場合でも、それらの各ウィンドウに対応するサムネイルを提供できます。 これにより、ユーザーは、アプリケーションに切り替えて宛先に切り替えるのではなく、必要なアプリケーションのビューに直接切り替えることができます。 たとえば、複数ドキュメント インターフェイス (MDI)/tabbed-document interface (TDI) アプリケーションでは、各ドキュメントまたはタブを個別のサムネイルとして表示し、グループのタスク バー ボタンの上にマウス ポインターを合わせるとターゲットを切り替えることができます。
Note
Windows Vista と同様に、Aero はサムネイルを表示するためにアクティブになっている必要があります。
API
- ITaskbarList3::RegisterTab
- ITaskbarList3::SetTabActive
- ITaskbarList3::SetTabOrder
- ITaskbarList3::UnregisterTab
- ITaskbarList4::SetTabProperties
ウィンドウのサムネイル表現は通常は自動ですが、結果が最適でない場合は、サムネイルを明示的に指定できます。 既定では、最上位レベルのウィンドウにのみサムネイルが自動的に生成され、子ウィンドウのサムネイルは一般的な表現として表示されます。 これにより、エンド ユーザーにとって理想的ではない (混乱する) エクスペリエンスが発生する可能性があります。 たとえば、子ウィンドウごとに特定のスイッチ ターゲットサムネイルを使用すると、ユーザー エクスペリエンスが大幅に向上します。
API
- DwmSetWindowAttribute
- DwmSetIconicThumbnail
- DwmSetIconicLivePreviewBitmap
- DwmInvalidateIconicBitmaps
- WM_DWMSENDICONICTHUMBNAIL
- WM_DWMSENDICONICLIVEPREVIEWBITMAP
サムネイルとして使用するウィンドウの特定の領域を選択できます。 これは、アプリケーションがサムネイル サイズで表示したときに、ドキュメントまたはタブが類似して表示されることを認識している場合に役立ちます。 その後、アプリケーションは、ユーザーがサムネイルを区別するために使用できるクライアント領域の一部のみを表示するように選択できます。 ただし、サムネイルの上にマウス ポインターを置くと、その背後にある完全なウィンドウのビューが表示されるので、ユーザーはそれらを簡単に確認できます。
表示できる数を超えるサムネイルがある場合、プレビューは従来のサムネイルまたは標準アイコンに戻ります。
API
通常、IsShortCut エントリを含むファイルの種類にのみ必要な項目のショートカット メニューにタスク バーにピン留めを追加するには、適切なコンテキスト メニュー ハンドラーを登録します。 これは 、[スタート] メニューにピン留めする場合にも適用されます。 詳細については、 シェル拡張ハンドラーの登録 を参照してください。
関連トピック