BigBastis Blog

Programmfortschritt in der Windows Taskleiste anzeigen

Introduction

user

Sebastian Gross

Sebastian 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.


LATEST POSTS

Handling too long scrollspy menus 10th June, 2015

Java: Create ZIP archive 23rd March, 2015

.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:



404 Not Found

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:

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]

profile

Sebastian Gross

http://www.bigbasti.com

Sebastian 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.

Comments
user

Author bigbasti87

Posted at 22:09 10. Dezember 2009.

Bloggd: Programmfortschritt in der Windows Taskleiste anzeigen – http://blog.bigbasti.com/programmfortsch… #windows #vb #net

user

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

Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

View Comments (2) ...
Navigation