僕が忘れないように覚え書きです
APIは↓リンクから落としてきます
http://archive.msdn.microsoft.com/WindowsAPICodePack
Downloadsタブの"Windows API Code Pack ○○○ (Binaries, Source, Docs)"をクリックすると
規約が出てくるので I Agreeをクリックし落とします
ファイルはexeで ダブルクリックをするとそのフォルダに解凍されるっぽいです
○○○はバージョンが入り
現時点ではv1.1でした
以降v1.1は各自のバージョンで読み替えてください
解答してできたフォルダ"Windows API Code Pack 1.1"の中には3個ほどフォルダがあります
そのなかの"binaries"フォルダにdllとかが入っているので
C#のソリューションエクスプローラーで参照設定に追加します
必要なのはおそらくMicrosoft.WindowsAPICodePack.Shell.dllのはずです
(未確認 僕はとりあえずザクッと全部追加してしまった)
ココからソースコードの方になります
まず
"using Microsoft.WindowsAPICodePack.Taskbar;"
を追加しておくと楽です
そして適切な場所でタスクバーを初期化します
"TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);"
Normalを書き換えると色々とできるようです
例えばNormalの場合は緑ですが
Errorを指定した場合は赤になります
また、NoProgressを指定するとプログレスバーが消えるので、処理を終了しましたという意思表示が可能になります
プログレスバーの進行状況を変更するには
"TaskbarManager.Instance.SetProgressValue(val, max);"
を呼びます
valには現在値を、maxには最大値を入れます
minは指定出来ません
処理が終了した場合は上記の通りStateでNoProgressを指定するといいでしょう
なお、Errorを指定する際の注意点として
処理の途中でエラーになった場合はErrorを指定するだけでいいのですが
処理が始まる前にエラーになったばあいは
"TaskbarManager.Instance.SetProgressValue(1, 1);"
を呼んでプログレスバーを埋めると読みやすくなります
これはvalue=0の場合にプログレスバーの表示が非常に小さくなってしまうため
見づらくなるのを防ぐ目的があります
左:SetProgressValue(1, 1);を読んだ場合
右:SetProgressValue(1, 1);を呼ばなかった場合
単純な見やすさでは圧倒的に読んだ場合の方がいいです
ただし処理途中でのエラーの場合は呼ぶべきではありません
場合にもよりますが、処理途中のエラーで1:1を設定するとどこでエラーが発生したかわからなくなるためです
以上、Win7のタスクバーにプログレスバーを表示する方法です
なお、コードの中にはスペルミスがあるかもしれません
各自適切に読みなおしてください