.NET
Programmfortschritt in der Windows Taskleiste anzeigen
Posted on .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:
Error: Not Found
The requested URL /
was not found on this server.
Garnicht mal so kompliziert oder?
Dabei kann das Taskleistensymbol unseres Programms 5 verschiedene Werte annehmen:
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
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“
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:
Bild 4: Das Demoprojekt in Aktion
Das Demoprojekt könnt ihr hier laden: Download [VS 2008]
Sebastian Gross
http://www.bigbasti.comSebastian Gross arbeitet in Bielefeld als Softwareentwickler für .NET und Java im Bereich Web.Als Fan der .NET-Plattform lässt er sich kein Userguppen Treffen und Community Event im Raum OWL entgehen.Dabei hat er eine besondere Vorliebe für das ASP.NET MVC Framework und für das Test Driven Development (TDD) entwickelt.
Author bigbasti87
Posted at 22:09 10. Dezember 2009.
Bloggd: Programmfortschritt in der Windows Taskleiste anzeigen – http://blog.bigbasti.com/programmfortsch… #windows #vb #net
Author Maximilian
Posted at 15:34 21. Dezember 2009.
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