Windows 7の公式リリースは間近に迫っているので、C#プログラマー向けのオペレーティングシステムの新機能の検討が重要になっています。 UACの登場により、Windows Vistaのリリースで、プログラマ向けの新しいトレンドとルールがすでに登場しました。 しかし、Vistaはユーザーの間ではあまり普及していないため、プログラマーは新しいことをあまり積極的に学んでいません。 Windows 7のリリースにより、状況は改善される可能性があります。 私は、Window 7のプログラミング専用の
セクションをサイトに作成することにしました。
Habréには、すでにWindows 7のプログラミングに特化したサンプルのサイクルがありました。しかし、これらのサンプルは、Win7がまだベータ版であったときに登場しました。 そのため、記事にブックマークを付けて後で戻るようにしました。 ベータ版を稼働中のマシンに入れたくありませんでした。 しかし、最近、私はまだ
Windows 7を
インストールしており、非常に満足しています。
既にWin7を持っているので、ブックマークした資料の学習を開始できました。 しかし、例は少し時代遅れであることが判明しました。 他のクラスと名前空間とともに新しいライブラリが登場しました。 そのため、新しいアイテムをゼロから学ぶ必要がありました。 さらに、公開されている例はかなり経験のあるプログラマー向けに設計されているため、当然ながらいくつかの細かい部分は省略されています。
そして、タスクバーに進行状況インジケーター(ProgressBar)を作成する例から始めます。 このトピックに関する古いトピックはこちらにあり
ます 。
しかし、最初に準備する必要があります。
Microsoft .NET Framework用のWindows APIコードパックをダウンロードし
ます 。 これは、開発者が.NETを使用してWindows 7(および部分的にWindows Vista)のアプリケーションを作成できるように設計された強力なパッケージです。 このパッケージは、マネージコードを介して新しいWindows機能の一部にアクセスするために使用されるソースコードのライブラリです。
ファイルアーカイブを解凍し、
WindowsAPICodePack.slnソリューションを実行し
ます 。 デフォルトでは、
シェルプロジェクトがスタートアッププロジェクトとして使用されます。 タスクバーを操作するために見つける必要があるクラスがここにあるため、これは私たちにぴったりです。
ビルドを選択
| シェルを
ビルドし、フォルダー
.. \ WindowsAPICodePack \ Shell \ bin \ Debugで Microsoft.WindowsAPICodePack.Shell.dllファイルを
デバッグします。 これが私たちのライブラリであり、プロジェクトで使用します。
Visual Studioを起動して、新しいWindows7TaskBarProgressBarDemoプロジェクトを作成します。 ソリューションエクスプローラーで、[
参照 ]フォルダーを右クリックし、[
参照の追加 ]を選択します。 ダイアログボックスで、[
参照 ]タブに切り替えて、作成した
Microsoft.WindowsAPICodePack.Shell.dllライブラリを見つけます。 コード編集モードに切り替えて行を書く
Microsoft.WindowsAPICodePack.Taskbarを使用します。これで、最初の準備が完了しました。
フォームにタイマーを追加し、タイマーを開始するボタンを追加します。 それでは、アプリケーションの目的についてお話ししましょう。 加熱するためにストーブに牛乳を入れたとします。 しかし、ストーブに立ちたくはありませんが、Habréの新しい記事を読みたいです。 あなたは、すぐに悪いことは何も起こらず、牛乳が逃げないことを確信しています。 しかし、興味深い記事を読んでも、あなたは時間に気づきません。 結果は嘆かわしいです。 私たちは時間をかけてコントロールを確立しようとします。
そこで、タイマー間隔を1000(1秒)に設定し、コードを記述します。
TaskbarManager instanceTaskBar = TaskbarManager.Instance;
static int counter = 0;
private void butStartTimer_Click( object sender, EventArgs e)
{
instanceTaskBar.SetOverlayIcon( null , "" );
timerCook.Enabled = true ;
}
private void timerCook_Tick( object sender, EventArgs e)
{
counter += 1;
instanceTaskBar.SetProgressValue(counter, 60);
if (counter >= 60)
{
timerCook.Enabled = false ;
counter = 0;
instanceTaskBar.SetProgressValue(0, 60);
instanceTaskBar.SetOverlayIcon(Windows7TaskBarProgressBarDemo.Properties.Resources.Ready, "" );
}
}
* This source code was highlighted with Source Code Highlighter .
次に、コードの説明。
SetProgressValueメソッドは、タスクバーのアプリケーションボタンを進行状況インジケーターとして色付けします。 タイマーを開始することにより、1秒ごとにカウンターを増やし、最大値(この場合は最大60)に戻します。 カウンターが上限に達したら、何らかの方法で操作が完了したことをユーザーに視覚的に示す必要があります。 この目的のために、
SetOverlayIconメソッドを使用することにしました。これについては、
後で説明します。
それで、実際にどのように見えるか。 ストーブに牛乳を入れ、コンピューターの前に座ってタイマーを開始するボタンを押します。 これで、ブラウザーに切り替えてHabréの記事を読むことができます。 インディケーターの目の前で、読書に残される時間をいつでも制御できます。

分が終了すると、タスクバーにアイコンが表示され、プロセスの終了を知らせます。

ご覧のとおり、すべてが非常に簡単です。
この例では、標準の進行状況インジケーター緑(標準モード)を使用しました。 他のオプションがあります:NoProgress、Indeterminate、Error、Paused。 既に説明した「
Windows 7のプログラミング:タスクバー 」ページで、それらの外観を確認できます
。 パート1-プログレスバー/ Windows 7 /オタク誌上記の例は少し工夫されています。 実際には、このような機能は、コピープロセスの表示、データ生成、画像生成など、さまざまなタスクに必要になる場合があります。 Windows 7のネイティブアプリケーションとは別に、一部のサードパーティアプリケーションは既にこの機能を使用しています。
誰かが例に問題を抱えている場合は、少し後に
Windows 7セクションのサイトにソースを投稿します。 Window 7の学習を頑張ってください!