| 

.NET C# Java Javascript Exception

2
Das Icon soll anzeigen, was sich in dem Programm tut, also welches Ergebnis es gerade ermittelt hat oder welchen Fortschritt es hat.
News:
12.03.2011
Tim Onni 21 1 3
3 Antworten
0
Du kannst mehrere Icons zu den Resourcen deines Projekts hinzufügen und zur Laufzeit über "Properties.Resources" laden.

Die Hälfte hatte ich vergessen. Das Ändern zur Laufzeit geht wohl nur unmanaged, müsste aber hiermit machbar sein: UpdateResource Function
12.03.2011
Jürgen Luhr 7,1k 2 9
Vielen Dank.
Tim Onni 13.03.2011
@Jürgen: zur Laufzeit dürfte diese Funktion fehlschlagen insofern man versucht sie auf die aktuell ausgeführte Anwendungsdatei zu benutzen. :)
STATUS_ACCESS_DENIED 13.03.2011
Aber wie funktioniert dann das, was beispielsweise der Browser Chrome macht: Wenn man da eine Datei lädt, zeigt das Icon in der Taskleiste den Fortschritt an.
Tim Onni 14.03.2011
0
Was du suchst ist in C/C++ über die Fensternachricht WM_SETICON machbar.

Meines Wissens nach kann man auch unter C# SendMessage benutzen um diese Fensternachricht zu schicken. Zielfenster sollte jenes Fenster sein, welches auch die Titelleiste enthält in der du das Icon ändern möchtest. Das ändert das Symbol welches in der Taskleiste und der Titelleiste des jeweiligen Anwendungsfensters gezeigt wird.

In Windows 7 gibt es dann noch weitere Möglichkeiten, aber es ist nicht ganz klar ob es das ist was du möchtest. Man kann dem Symbol in der Taskleiste sowohl eine Fortschrittsanzeige (progress bar) mitgeben, als auch überlagterte Symbole über dem Anwendungssymbol in der Taskleiste anzeigen (siehe ITaskbarList3). In dem Fall willst du das hier, was die neuen Windows 7 APIs für .NET bequem aufbereitet.

NB: UpdateResource ist dazu da die Ressourcen in einer Binärdatei zu verändern. Das verändert sie dann zwar später auch wenn die Anwendung läuft, hat aber nichts mit einer Änderung der Anzeige während der Laufzeit zu tun.
13.03.2011
0
Ist hier das in die Executable eingebettete Icon gemeint, oder das in der Fenterleiste, oder eins im Tray-Bereich?
Ersteres ist wohl eher schwierig und auch nicht für solche Aufgaben gedacht.
Das in der Fentserleiste kann mit
Form1.Icon = <some value>;

geändert werden, wobei Form1 eine Instanz von System.Windows.Forms.Form ist (also beispielsweise das Hauptfenster).
Das im Tray über ein
notifyIcon1.Icon = <some value>;

wobei notifyIcon1 ein System.Windows.Forms.NotifyIcon ist.

Woher das Icon kommt ist letztendlich egal. Resourcen bieten sich an.
Ich denke aber, dass Du die 'ProgressBar' in der Windows7 Taskleiste meinst, und da schließe ich mich dann STATUS_ACCESS_DENIED an. Nutze die entsprechenden APIs.
14.03.2011
DaSpors 4,2k 2 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH