So-net無料ブログ作成
検索選択

【VB】フォームアプリケーションでタスクバーにプログレスインジケーター【NuGetもあるよ☆】

Windowsフォームアプリケーションでタスクバーにプログレスインジケーターを表示させるには「Windows API Code Pack」というライブラリを使うんだけど、なんかネット上だと古い情報が更新されてなかったりとかなんやかんやあったので、メモも兼ねて一つの記事にしようと思いますん。対象としては、開発環境は「Visual Studio 2013」、言語は「Visual Basic」です。たぶんC#でも同じような感じでやればイケると思う。
なお、この記事では私が作ったプログラム「ts_batch」を例に解説しています。「ts_batch」についてはこちら→そうだ、バッチ処理をVBでやろう

NuGetを使う

古い解説記事だとAPI Code Packの入手先としてMSDNへのリンクが貼ってあるところばかりだが、2015年3月の時点では、API Code Packの正式な入手先がNuGetギャラリーに変わっていて、MSDNの配布ページはなくなっている。なので、まずNuGetについてざっくり説明する。
大学などでJavaをやっている方なら、Eclipseは一度は使ったことがあると思う。
そのEclipseに、「パッケージマネージャ」という機能があったのは覚えているだろうか?
NuGetはパクリそれと同じようなもの。ライブラリなど(「パッケージ」といいます)をいろんな方が公開している「リポジトリ」という場所から、お手軽ダウンロードできるツール。ダウンロードしたパッケージを適切な場所に配置して速攻でプログラムに組み込めるようにしてくれたり、パッケージの更新機能なんかもある。@ITなどにも説明があるので、NuGetについての詳しくはそちらを参照すること。
ちなみに前述した「NuGetギャラリー」はマイクロソフト公式のリポジトリ。これ以外のリポジトリや「プライベートリポジトリ」についてはここでは省略する。

NuGetでAPI Code Packをダウンロード

まずはパッケージ管理ウィンドウを開こう。ソリューションエクスプローラーからプロジェクトを右クリック→「NuGet パッケージの管理」。
nuget説明1.png
nuget説明2.png
検索バーに「apicodepack」と入れてみよう。
nuget説明3.png
API Code Packは機能ごとにいくつか種類がある。今回はタスクバー関連の機能だけ欲しいので、Shell and Taskbar featuers fromウンタラカンタラ(英語読めないけど、たぶん「インテリセンス用XMLコメント付きの、シェルおよびタスクバー機能用Windows API Code Pack。Vista以降が必要です。」って書いてあると思うっぽい)と書いてあるやつをイタダキマス。
nuget説明4.png
この表示から、自動的にAPI Code Packのコア部もインストールされる、ということがわかる。ライセンス条項に同意してインストールを続行しよう。
nuget説明5.png
こちらはインストール完了後のオブジェクトブラウザー。しっかり追加されているのがわかる。

プログラムに組み込む

名前空間が長ったらしいので、まずは安定のインポート宣言。
nuget説明6.png
今回はBackgroundWorkerで時間がかかる処理をやっているので、ProgressChangedイベントハンドラ内でプログレスインジケーターの表示を更新することにした。
nuget説明7.png
赤い四角の中の上のほう、SetProgressStateメソッドは、プログレスインジケーターの色を変更するメソッド。引数の型であるTaskbarProgressBarState列挙体のメンバはこんなかんじ。
◯Normal:インジケーターの色を緑色にする。
◯Error:インジケーターの色を赤色にする。
◯Paused:インジケーターの色を黄色にする。
◯NoProgress:インジケーター表示を無効にする。有効化するには、これ以外のメンバをメソッドの引数として渡せばいい。
◯Indeterminate:使ったことないからわからん。説明には緑色の点滅状態になるとか書いてあった。たぶん緑色のが左から右に流れていくアレになるんじゃない?
下のほうのSetProgressValueメソッドはメソッド名の通り、どのくらいの進捗状況かを設定するメソッド。第一引数には現在値、第二引数には最大値を渡す。例として現在値3、最大値6と渡すと、「処理が50%終わったんだね」ということで、インジケーターのゲージが半分までニョキっと伸びる。今回はe.ProgressPercentageに「何%終わったよ」という値が格納されているので、現在値にe.ProgressPercentage、最大値に100を指定している。

以上、駆け足だがタスクバーにプログレスインジケーターを表示する方法を説明した。ちょっとくらいは誰かの役に立ちますように。

余談:Windows API Code Packとは、.NET Frameworkでは提供されていないWindowsの機能をカンタンに使えるようにするための、Win32APIのラッパです。プログレスインジケーターの他にも、ジャンプリストを弄ったりとかもできるらしいです。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0

この記事のトラックバックURL:

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。