Windows 7用にプログラムします。タスクバーの進行状況バー

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の学習を頑張ってください!






All Articles