Windows 7 : WindowsAPICodePack und der Fortschrittsbalken in der Taskleiste

Von Mario Meir-Huber Autor Feed 16. August 2009 18:26

Eine der coolen Dinge in Windows 7 ist ja die neue Taskleiste. Da sich hier einiges erheblich geändert hat, gibt es auch einige neue API’s, welche im WindowsAPICodePack zusammen gefasst wurden. Max hat bereits darüber hier gebloggt.

Zu beginn möchte Ich an dieser Stelle den Fortschrittsbalken anzeigen, um welche man .Net Applikationen erweitern kann. Der Fortschrittbalken für die eigene Applikation ist eines der Neuerungen mit Windows 7. Diese kommen derzeit vor allem bei Downloads (Internet Explorer 8) zum Einsatz.

image

Damit man diese auch nutzen kann muss man Microsoft.WindowsAPICodePack.Shell.dll registrieren (siehe Abbildung 2)

image

Im nächsten Schritt wird noch der Namespace importiert:

using Microsoft.WindowsAPICodePack.Taskbar;

Danach sollte man auch noch überprüfen ob die Plattform unterstützt wird (das heißt, ob es sich auch tatsächlich um Windows 7 handelt). Dies kann man indem man vom TaskbarManager die Methode

TaskbarManager.IsPlatformSupported

aufruft. Mit “SetProgressValue” kann man den Fortschritt angeben. Hierbei ist der erste Parameter der aktuelle Wert, der zweite Parameter ist der höchste Wert. Es gibt auch einige Möglichkeiten, den Fortschritt anzuzeigen. Damit kann man einen Download Error, einen unbekannten Zustand (Laufbalken) oder eine pausierung anzeigen. All dies funktioniert mit “SetProgressValue”, welche einen Parameter vom Typ “TaskbarProgressBarState” benötigt. Für ein etwas komplexeres Beispiel wird zuerst ein DispatcherTimer angewendet, welcher den Wert der Leiste verändert und dann unterschiedliche Stati anzeigt.

private int value = 0;
private const int maxvalue = 100;

public Window1()
{
    InitializeComponent();

    if (TaskbarManager.IsPlatformSupported)
    {
        DispatcherTimer timer = new DispatcherTimer();
        timer.Interval = TimeSpan.FromMilliseconds(200);

        timer.Tick += OnTimerTick;

        timer.Start();
    }
}

In diesem Beispiel wird zuerst überprüft ob die Plattform unterstützt wird. Danach wird der Timer gestartet. Ferner sind 2 Werte, der aktuelle Wert und der maximale Wert, als private Variablen definiert.

Nun muss nur noch der Event Handler implementiert werden.

void OnTimerTick(object sender, EventArgs e)
{
    value += 10;

    if (value == 100)
    {
        TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Paused);
        TaskbarManager.Instance.SetProgressValue(80, maxvalue);
    }
    else if (value == 200)
    {
        TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Error);
        TaskbarManager.Instance.SetProgressValue(80, maxvalue);
    }
    else if (value < 100)
    {
        TaskbarManager.Instance.SetProgressValue(value, maxvalue);
    }
}
Hier wird bis zu einem Wert von 100 der Fortschritt angezeigt. Danach wird bei 100 eine Pause angezeigt und bei 200 ein Fehler. Pause bedeutet in diesem Fall das der Balken Gelb eingefärbt wird. Bei einem Fehler ist der Balken Rot.

Client-Development | General

Tags:  Feed Tag

Comments

>

8/18/2009 10:55:28 PM #

Windows 7 : WindowsAPICodePack und JumpLists in .Net

Windows 7 : WindowsAPICodePack und JumpLists in .Net

codefest.at

Add comment


(Will show your Gravatar icon)

  Country flag

biuquote
  • Comment
  • Preview
Loading



Big>Days 2010

Welche Vortrag möchten Sie auf den Big>Days 2010 sehen?



Show Results

Werbepause

CodeFest.at on Facebook

Calendar

<<  February 2010  >>
MoTuWeThFrSaSu
25262728293031
1234567
891011121314
15161718192021
22232425262728
1234567

View posts in large calendar

www.microsoft.com/austria | © 2009 Microsoft Corporation. Alle Rechte vorbehalten.
BlogEngine.NET 1.5.0.7 powered by atwork