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.

Pingbacks and trackbacks (2)+

Add comment

  Country flag

biuquote
  • Comment
  • Preview
Loading

Datenschutzhinweis: Sie stimmen durch "Kommentar speichern" der Speicherung Ihrer Angaben durch Microsoft Österreich für die Beantwortung der Anfrage zu. Sie erhalten dadurch keine unerwünschten Werbezusendungen. Ihre Emailadresse wird auf Ihren Wunsch dazu verwendet Sie über neue Kommentare zu informieren.

Microsoft respektiert den Datenschutz. Datenschutz & Cookies


 
    Build2016
    Developer Events

Aktuelle Downloads

Azure Free Trial
 
Visual Studio Downloads
 
Windows Azure Free Trial
Instagram
CodeFest.at on Facebook

Datenschutz & Cookies · Nutzungsbedingungen · Impressum · Markenzeichen
© 2013 Microsoft. Alle Rechte vorbehalten · BlogEngine.NET 2.7.0.0 · Diese Website wird für Microsoft von atwork gehostet.
powered by atwork