BigBasti's Blog About Me & my Digital Lifestyle

11Dez/091

Programmfortschritt in der Windows Taskleiste anzeigen

Wenn ihr Windows 7 bereits verwendet, werden euch sicherlich einige Neuerungen aufgefallen sein. Einige von denen ist die neue Funktion der Taskleiste den Fortschritt eines Programms darzustellen.

Ihr werdet dies beobachten, wenn ihr z.B. eine Datei mit dem Internet Explorer 8 herunterladet oder eine Datei kopiert. Das Programm zeigt den eigenen Fortschritt dann unter dem Eigenen Symbol in der Taskleiste an.

Diese Funktion ist extrem praktisch, so kann man sie benutzen um den Benutzer immer aktuell zu halten, ohne dass er das eigentliche Programm offen hat. Mögliche Anwendungsfälle wären Dateidownloads, Kopiervorgänge, Bildererzeugung und allgemeine Vorgänge, die etwas Zeit in Anspruch nehmen.

Natürlich können auch wir diese Funktionen in unseren Projekten nutzen. Leider werden die Aufrufe an das Betriebssystem unmanaged gestartet, was bedeutet, dass diese Aufrufe umgewandelt (gewrapped) werden müssen. Da das ein sehr komplexer Vorgang ist hat Microsoft uns diesen gespart und schon einige vorgefertigte Klasse angefertigt auf die wir zurückgreifen können.

Diese Librarys finden wir im MSDN in der .NET Interop Sample Library. Diese Beispielsammlung enthällt viele weitere Beispiele. Wir betrachten hier nur das was mit dem Fortschrittsbalken in der Taskleiste zu tun hat.

Deswegen brauchen wir auch nicht alle Klassen, sondern nur diese:

Vista Bridge Sample Library
Windows7.DesktopIntegration
Windows7.DesktopIntegration. Registration.

Windows7.DesktopIntegration enthält hierbei die Klasse WindowsFormsExtensions, welche uns die nötigen "Extensions"-Funktionen zur Verfügung stellt um das Aussehen der Taskleiste ändern zu können.

In unserem (einfachen) Fall werden wir nur die beiden Methoden benötigen:

SetTaskbarProgress(float percent)
SetTaskbarProgressState(ThumbnailProgressState state)

Mit der Ersten Methode können wir den Fortschritt der Progressbar steuern, und mit der zweiten das Aussehen. Für die zweite Funktion müssen wir neben dem Zustands Parameters auch das Handle des Fensters angeben, für das die Aktion ausgeführt wird.

So könnten die Aufrufe folgendermaßen aussehen:


WindowsFormsExtensions.SetTaskbarProgress(Me.ProgressBar1)
WindowsFormsExtensions.SetTaskbarProgressState(Me, _
                         Windows7Taskbar.ThumbnailProgressState.Error)

Garnicht mal so kompliziert oder?

Dabei kann das Taskleistensymbol unseres Programms 5 verschiedene Werte annehmen:

progresstaskbarBild 1: Cool oder?

Wenn wir nun also ein neues Windows Forms Projekt erstellen müssen wir ersteinmal die drei oben erwähnten Class Librarys importieren. Das machen wir in dem wir über Datei->Hinzufügen->Vorhandenes Projekt wählen

progresstaskbar3Bild 2: Projekte hinzufügen

Auf diese Weise fügen wir alle drei oben erwähnten Projekte dem unseren hinzu. Wenn das geschafft ist müssen wir noch die nötigen Verweise hinzufügen. Dazu wählen wir Projekt->Verweis hinzufügen... und dann den Tab "Projekte"

progresstaskbar4Bild 3: Verweise hinzufügen

Hier wählen wir alle drei Projekte aus und klicken auf "OK"!

Wie ihr nun im Projektmappen Explorer erkennen werdet ist das Projekt gleich mal um einiges gewachsen! Ihr könnt dieses Vorgehen auch umgehen, indem ihr die importierten Class Librarys als DLL kompiliert und direkt in das Projekt einbindet. Das schafft vielleicht mehr Übersicht.

Nun haben wir schon das größte Hindernis schon überwunden! Nun gehts ans Programmieren, wofür ihr die oben vorgestellten Funktionen benutzen könnt um eurem Programm den nötigen Windows 7 Look zu verpassen!

Ich habe dazu wie immer eine kleine Demo angefertigt. Meine sieht so aus:

progresstaskbar2Bild 4: Das Demoprojekt in Aktion

Das Demoprojekt könnt ihr hier laden: Download [VS 2008]

VN:F [1.8.4_1055]
Rating: 8.2/10 (5 votes cast)
Programmfortschritt in der Windows Taskleiste anzeigen8.2105
Share and Enjoy:
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Yigg
  • Google Bookmarks
  • PDF
  • MySpace

hat dir dieser Artikel gefallen?

Dann abonniere doch diesen Blog per RSS Feed!

Kommentare (1) Trackbacks (0)
  1. Bloggd: Programmfortschritt in der Windows Taskleiste anzeigen – http://blog.bigbasti.com/programmfortsch... #windows #vb #net
    via Twitoaster

  2. Mahlzeit,
    mal sollte vielleicht erwähnen, dass das von dir verlinkte Librarypaket nicht mehr aktuell ist. Microsoft hat mit dem Release von Windows 7 das Windows API Code Pack veröffentlicht, mit dem sich neben der TaskBar auch die Jumplists, TaskDialoge und co ansteuern lassen.
    Link: http://code.msdn.microsoft.com/WindowsAPICodePack/Release/ProjectReleases.aspx?ReleaseId=3574

    Cheerio


Kommentar schreiben


Noch keine Trackbacks.

Get Adobe Flash playerPlugin by wpburn.com wordpress themes