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