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.
Damit man diese auch nutzen kann muss man Microsoft.WindowsAPICodePack.Shell.dll registrieren (siehe Abbildung 2)
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.