Windows API Code Packによるアプリ開発 第6回 Windows 7 タスクバー ~進行状況バー (プログレス バー)~

Windows API Code Packによるアプリ開発 [TechED2010 ポストセッション]
第6回 Windows 7 タスクバー ~進行状況バー (プログレス バー)~

今回は、Windows 7のタスクバーの機能のうち、進行状況バー (プログレス バー) の実装方法について説明します。
多量のファイルをコピーしているとき、タスクバー上のエクスプローラーのアイコンの部分に、進行状況が緑色で表示されます。
この進行状況を示している緑色の帯が進行状況バーです。

以下の図では、エクスプローラーのアイコンの部分に赤い帯、インターネット エクスプローラーのアイコンの部分には緑色の帯、CPUと書かれたアイコンの部分には黄色の帯が表示されています。

このように、状況に応じて緑、黄色、赤の帯を表示させることができます。

それでは、進行状況バーを実装してみましょう。
Windows API Code Packのタスクバーの機能を使用する場合の準備作業としては、第5回の記事中の [タスクバー関連の機能を使う前に] をご参照ください。

進行状況バーを使う際には、2つの情報を指定します。
どの色で表示させるかと、どの長さの帯にするかです。
色は、先ほどの緑、黄色、赤の3色です。これ以外に、緑色の帯が左側から右に流れるような表示もできます。

まず、色を指定しましょう。
いちばんよく使うと思われる緑は、以下のように指定します。

TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);

このコードの最後にあるNormalの部分をPausedに変えると黄色の帯を、Errorに変えると赤い帯を表示させることができます。
ここで、引数に指定する文字がNormal、Paused、Errorということからもわかるとおり、使用方法としては通常の状況だと緑で表示、一時的に中断している状態では黄色で表示、エラーが発生している状態だと赤で表示することを念頭に置いて作られていることがわかります。

次に、どのくらいの幅で表示させるかを指定します。
例えば全体の33%を表示させたい場合は、以下のように指定します。

TaskbarManager.Instance.SetProgressValue(33, 100)

第1引数を第2引数で割った値が、表示させる幅に比例します。
このように、色と長さを指定するだけで進行状況バーを使用できます。

次回は、タスクバーのサムネイル ツールバーについて説明します。

[注意事項]
.NET Framework 2.0をご使用の場合は、Visual Studio 2010またはVisual Studio 2008を使用して対象フレームワークを.NET Framework 3.0以上に変更してください。
変更するには、メニューの[プロジェクト]のいちばん下にある[(プロジェクト名)のプロパティ]を選択して、表示されるダイアログの[対象フレームワーク]の部分を変えてください。
実装の途中でPresentationCore や WindowsBase への参照を求められますので、参照の追加ダイアログの .NET タブにある該当するコンポーネントを選択し、参照を追加してください。

[参考資料]
TechEDでのビデオとスライド
https://msdn.microsoft.com/ja-jp/events/ff973814.aspx
内容を早く知りたい方や、デモを確認されたい方は、ビデオをご覧ください。

Windows API Code PackによるWindowsアプリ開発 [TechEDポストセッション]
第1回 : Windows API Code Packとは
第2回 : アプリケーションの再起動と修復 その1
第3回 : アプリケーションの再起動と修復 その2
第4回 : 電源の状況の把握
第5回 : Windows 7 タスクバー ~アイコン オーバーレイ~
第6回 : Windows 7 タスクバー ~進行状況バー (プログレス バー)~
その後も、Windows 7のタスクバー関連の説明を行います。

[お知らせ]
Windows 7 アプリ投稿キャンペーンを実施中です。

https://msdn.microsoft.com/ja-jp/windows/jpwin7cp01.aspx
たった3行の追加 (usingの文、色の設定、長さの設定) だけで、進行状況バーを機能をつけることができます。進行状況バーを使用すると、キャンペーンの参加資格を得られます。
皆様のご応募をお待ちしています。

マイクロソフト
田中達彦
p.s 昨日ポストした第5回目の記事に、「進捗管理バー」と書いてしまいました.... 進捗は管理してくれません。