【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 パッケージの管理」。
検索バーに「apicodepack」と入れてみよう。
API Code Packは機能ごとにいくつか種類がある。今回はタスクバー関連の機能だけ欲しいので、Shell and Taskbar featuers fromウンタラカンタラ(英語読めないけど、たぶん「インテリセンス用XMLコメント付きの、シェルおよびタスクバー機能用Windows API Code Pack。Vista以降が必要です。」って書いてあると思うっぽい)と書いてあるやつをイタダキマス。
この表示から、自動的にAPI Code Packのコア部もインストールされる、ということがわかる。ライセンス条項に同意してインストールを続行しよう。
こちらはインストール完了後のオブジェクトブラウザー。しっかり追加されているのがわかる。
プログラムに組み込む
名前空間が長ったらしいので、まずは安定のインポート宣言。
今回はBackgroundWorkerで時間がかかる処理をやっているので、ProgressChangedイベントハンドラ内でプログレスインジケーターの表示を更新することにした。
赤い四角の中の上のほう、SetProgressStateメソッドは、プログレスインジケーターの色を変更するメソッド。引数の型であるTaskbarProgressBarState列挙体のメンバはこんなかんじ。
◯Normal:インジケーターの色を緑色にする。
◯Error:インジケーターの色を赤色にする。
◯Paused:インジケーターの色を黄色にする。
◯NoProgress:インジケーター表示を無効にする。有効化するには、これ以外のメンバをメソッドの引数として渡せばいい。
◯Indeterminate:使ったことないからわからん。説明には緑色の点滅状態になるとか書いてあった。たぶん緑色のが左から右に流れていくアレになるんじゃない?
下のほうのSetProgressValueメソッドはメソッド名の通り、どのくらいの進捗状況かを設定するメソッド。第一引数には現在値、第二引数には最大値を渡す。例として現在値3、最大値6と渡すと、「処理が50%終わったんだね」ということで、インジケーターのゲージが半分までニョキっと伸びる。今回はe.ProgressPercentageに「何%終わったよ」という値が格納されているので、現在値にe.ProgressPercentage、最大値に100を指定している。
以上、駆け足だがタスクバーにプログレスインジケーターを表示する方法を説明した。ちょっとくらいは誰かの役に立ちますように。
余談:Windows API Code Packとは、.NET Frameworkでは提供されていないWindowsの機能をカンタンに使えるようにするための、Win32APIのラッパです。プログレスインジケーターの他にも、ジャンプリストを弄ったりとかもできるらしいです。
なお、この記事では私が作ったプログラム「ts_batch」を例に解説しています。「ts_batch」についてはこちら→そうだ、バッチ処理をVBでやろう
NuGetを使う
古い解説記事だとAPI Code Packの入手先としてMSDNへのリンクが貼ってあるところばかりだが、2015年3月の時点では、API Code Packの正式な入手先がNuGetギャラリーに変わっていて、MSDNの配布ページはなくなっている。なので、まずNuGetについてざっくり説明する。
大学などでJavaをやっている方なら、Eclipseは一度は使ったことがあると思う。
そのEclipseに、「パッケージマネージャ」という機能があったのは覚えているだろうか?
NuGetは
ちなみに前述した「NuGetギャラリー」はマイクロソフト公式のリポジトリ。これ以外のリポジトリや「プライベートリポジトリ」についてはここでは省略する。
NuGetでAPI Code Packをダウンロード
まずはパッケージ管理ウィンドウを開こう。ソリューションエクスプローラーからプロジェクトを右クリック→「NuGet パッケージの管理」。
検索バーに「apicodepack」と入れてみよう。
API Code Packは機能ごとにいくつか種類がある。今回はタスクバー関連の機能だけ欲しいので、Shell and Taskbar featuers fromウンタラカンタラ(英語読めないけど、たぶん「インテリセンス用XMLコメント付きの、シェルおよびタスクバー機能用Windows API Code Pack。Vista以降が必要です。」って書いてあると思うっぽい)と書いてあるやつをイタダキマス。
この表示から、自動的にAPI Code Packのコア部もインストールされる、ということがわかる。ライセンス条項に同意してインストールを続行しよう。
こちらはインストール完了後のオブジェクトブラウザー。しっかり追加されているのがわかる。
プログラムに組み込む
名前空間が長ったらしいので、まずは安定のインポート宣言。
今回はBackgroundWorkerで時間がかかる処理をやっているので、ProgressChangedイベントハンドラ内でプログレスインジケーターの表示を更新することにした。
赤い四角の中の上のほう、SetProgressStateメソッドは、プログレスインジケーターの色を変更するメソッド。引数の型であるTaskbarProgressBarState列挙体のメンバはこんなかんじ。
◯Normal:インジケーターの色を緑色にする。
◯Error:インジケーターの色を赤色にする。
◯Paused:インジケーターの色を黄色にする。
◯NoProgress:インジケーター表示を無効にする。有効化するには、これ以外のメンバをメソッドの引数として渡せばいい。
◯Indeterminate:使ったことないからわからん。説明には緑色の点滅状態になるとか書いてあった。たぶん緑色のが左から右に流れていくアレになるんじゃない?
下のほうのSetProgressValueメソッドはメソッド名の通り、どのくらいの進捗状況かを設定するメソッド。第一引数には現在値、第二引数には最大値を渡す。例として現在値3、最大値6と渡すと、「処理が50%終わったんだね」ということで、インジケーターのゲージが半分までニョキっと伸びる。今回はe.ProgressPercentageに「何%終わったよ」という値が格納されているので、現在値にe.ProgressPercentage、最大値に100を指定している。
以上、駆け足だがタスクバーにプログレスインジケーターを表示する方法を説明した。ちょっとくらいは誰かの役に立ちますように。
余談:Windows API Code Packとは、.NET Frameworkでは提供されていないWindowsの機能をカンタンに使えるようにするための、Win32APIのラッパです。プログレスインジケーターの他にも、ジャンプリストを弄ったりとかもできるらしいです。
2015-03-09 17:46
nice!(0)
コメント(2)
トラックバック(0)
Versand Viagra Cialis GР С–РЎВnstig Kaufen 40mg <a href=http://tadalaf20mg.com>cialis 5 mg best price usa</a> Viagra Ohne Rezept Serios
by LesTemo (2019-11-18 06:56)
Viagra Riesgos Viagra Vente QuСЂВ bec <a href=http://cialibuy.com>Buy Cialis</a> Cialis 14 Compresse Prezzo Clomid 50mg Achete Viagra Achat En Ligne Belgique
by LesTemo (2020-01-16 17:24)