2009-06-09 14 views
26

Ich möchte das Symbol in der Windows 7 Taskleiste anpassen. Wenn meine App ausgeführt wird, kann ich dies tun, indem ich das Hauptfenstersymbol ändere, aber wenn die App angeheftet wird, wird das Symbol der EXE angezeigt.Change pinned Taskleiste Symbol (Windows 7)

Wie kann ich das Taskleistensymbol für meine App auf ein anderes Symbol als das in der exe eingebettete Symbol setzen?

Nicht versucht, diese solution kann funktionieren, aber sieht schmutzig aus.


Edit:

Unsere App wird einmal kompiliert, sondern je nach Konfigurationsdatei werden Funktionen aktiviert oder nicht so ist es ein Produkt oder ein anderes. Wir wollen für jedes Produkt keine EXE kompilieren.

Die obige Lösung funktioniert möglicherweise nicht, da viele Instanzen meiner App in verschiedenen Pfaden installiert werden können (so dass Sie denselben Dateinamen haben, aber andere Symbole!), Ist dieser Registrierungsschlüssel schlecht entworfen oder fehlt mir etwas ?

+0

Ich würde annehmen, dass es keine Unterstützung dafür geben würde, nur weil, wenn ich ein Icon festlegte, ich annehmen würde, dass sich das Icon später nicht in etwas anderes verwandeln würde. Overlays, die ich verstehen konnte, aber kein IE-Icon, das beim Anklicken zu einem Firefox-Icon wird. –

+0

siehe es: http://stackoverflow.com/questions/1285798/is-it-possible-to-change-a-console-windows-icon-from-net –

Antwort

24

EDIT Die Info unten zu finden ist ein bisschen veraltet; Alle neuen Windows 7-Bits sind jetzt als verwaltete API verfügbar, hier verfügbar: http://code.msdn.microsoft.com/WindowsAPICodePack

Es gibt eine series of articles auf der neuen Taskbar-API von der Debugging-Guru Sasha Goldshtein. Sie sollten sich die Overlay Icons and Progress Bars API ansehen.

Sie können den Beispielcode von Windows 7 Taskbar Developer Resources auf Microsoft Code herunterladen. Was Sie suchen ist das IMClient Beispiel:

Das IMClient Beispiel zeigt, wie Taskleiste Overlay-Symbole und die Taskleiste Fortschrittsbalken leuchten können eine Taskleiste Schaltfläche Anwendung statt der Berufung auf einem zusätzlichen Dialog oder auf ein Symbol in der Systembenachrichtigung Bereich (Fach).

alt text alt text alt text

ich glaube, das sollten Sie erreichen helfen, was Sie wollen.

+0

Ich weiß es, ich verwende bereits Overlay-Symbole/pgbar in meiner App, aber Overlay ist nicht das gleiche wie App-Symbol. Overlay wird nicht angezeigt, wenn die App fixiert und geschlossen ist ... –

0

Werfen Sie einen Blick auf this blog. Er macht eine Reihe von Blog-Posts über die Programmierung der Windows 7-Taskleiste, damit Sie vielleicht in die richtige Richtung weisen.

1

Sie können dies tun, indem Sie die Bibliothek "Windows 7 Bridge" verwenden, die auf der "Windows Vista Bridge" basiert.

Dies sind verwaltete Wrapper für alle nativen Funktionen von Vista und Windows 7.

Weitere Daten können here

+0

Ich kenne diese Bibliothek, können Sie weitere Informationen (Beispiel ...) Wie erreiche ich das? –

1

Ich weiß nicht, ob ich das Problem bin zu verstehen, aber ..

Wenn Sie eine Anwendung erstellen und das Symbol Eigenschaft des Hauptfensters setzen, dass Symbol wird auch in der Taskleiste angezeigt. Aber wenn Sie es an die Taskleiste anheften, verschwindet dieses Symbol. Habe ich recht?Wenn ja, gehen Sie zu den Projekteigenschaften und legen Sie auf der Registerkarte "Anwendung" das gewünschte Symbol für die EXE-Datei fest. Jetzt sehen Sie das Symbol in der Taskleiste, wenn es fixiert ist.

Ich verwende das gleiche Symbol für beiden Dinge: P

+0

Sie sind richtig für den ersten Teil. Aber das Symbol meines Hauptfensters ist nicht das gleiche, ob eine Konfigurationsdatei vorhanden ist oder nicht. Ich möchte, dass dieses Symbol auch dann bleibt, wenn die App angeheftet wird, ohne dass für jede Konfiguration eine Exe kompiliert wird. –

+0

Was meinst du mit "kompilieren einer exe für jede Konfiguration"? Unter Windows 7 sind das Taskleistensymbol und das Windows-Titelsymbol identisch (mit der Eigenschaft Icon im Hauptfenster). Das angeheftete Symbol ist jedoch das .exe-Symbol. Wenn Sie nur eine EXE-Datei haben und sie anheften möchten, fügen Sie ein Symbol zu dieser EXE-Datei hinzu, und wenn die App angeheftet ist, wird dieses Symbol angezeigt. Kurz gesagt, benutze das gleiche Symbol für beide Dinge. –

+0

Ich arbeite an 3 Version der Anwendung (Lite, Normal, Pro). Das Marketing fordert uns auf, verschiedene Symbole für jede Version festzulegen. Die Version wird von config + serial key bestimmt und wir wollen nicht für jede Version eine exe erzeugen, nur um das Icon zu ändern. Ich weiß, dass es möglich ist, das Symbol zu ändern (siehe Link in meiner Frage), aber da es auf dem exe-Namen basiert, wird es fehlschlagen, wenn der Benutzer zwei oder mehr Versionen installiert hat. Ich denke, es ist nicht möglich und wir müssen mit einem Symbol bleiben oder viele Exes zusammenstellen. –

0

ich nicht dieses Recht leider jetzt testen können, aber vielleicht nur eine regelmäßige, gute alte Verknüpfung zu erstellen könnte das Problem lösen? Erstellen Sie eine Verknüpfung zu der App, ändern Sie das Symbol und fixieren Sie die Verknüpfung anstelle der App selbst?

überprüfen, wenn ich nächsten Zugriff auf meinem Windows 7 Maschine bekommen kann ...

16

Wenn Sie in der Task-Leiste eine Anwendung Stift, es wird lediglich eine Verknüpfung im folgenden Verzeichnis:

C:\Users\<User Name>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar 

Sie sollten in der Lage sein zu identifizieren, wo die Verknüpfung ist (dh Bekannte Ordner holen und von dort arbeiten. BenutzerAppData sollte die eine sein), und dann P/Invoke (IShellLink) verwenden, können Sie das Symbol ändern, das die Verknüpfung verwenden soll. Der Computer benötigt möglicherweise einen Neustart, damit dies wirksam wird, aber es sollte funktionieren.

Wenn Sie die Umschalttaste gedrückt halten, während Sie mit der rechten Maustaste auf die angeheftete Anwendung klicken und Eigenschaften auswählen, wird die Schaltfläche Symbol ändern für die Verknüpfung angezeigt. Dies ist im Grunde, was Sie mit Code emulieren müssen.

Alle diese Dinge können auf jeden Fall mit Code gemacht werden, aber ob Sie denken, sie sind besser als die Registrierung Einstellung liegt an Ihnen.

+0

Leider kann ich damit nicht umgehen, wenn der Benutzer selbst versucht, die Anwendung zu pinnen. Vielleicht mit einer Uhr auf dem Verzeichnis ... wirklich dreckig! –

+4

Die Schnellstartleiste sollte normalerweise für eine App als Teil der Benutzereinstellungen als nicht aktiv betrachtet werden. Daher sollte der Benutzer diesen Bereich verwalten. –

+0

Hervorragende Informationen, auch wenn man dies nicht im Code versucht. Vielen Dank. – mlibby

1

Soweit ich das beurteilen kann, können Sie aus irgendeinem Grund das Symbol für ein Programm, das bereits an die Taskleiste angeheftet ist, nicht ändern. Um es zu tun, lösen Sie einfach das Programm, suchen Sie es im Startmenü, klicken Sie mit der rechten Maustaste - Eigenschaften - Symbol ändern. dann pinnen Sie es in die Taskleiste und es wird das neue Symbol haben!

0

Klicken Sie mit der rechten Maustaste auf das angeheftete Symbol, im Popup-Fenster sehen Sie den Programmtitel, dort rechtsklicken Sie erneut und gehen Sie zu den Eigenschaften. Dort können Sie das Symbol ändern, indem Sie auf die Schaltfläche "Symbol ändern" klicken. Für mich brauchte es einen Neustart, um die Änderungen zu beenden.

-1

Wenn Sie eine Verknüpfung in der Taskleiste haben möchten, die direkt an eine nützliche Stelle geht, z. B. in Ihr "My Documents" -Verzeichnis. Die einfache Lösung. . .

Legen Sie einen Ordner in die Taskleiste (wodurch eine Verknüpfung zu Bildern erstellt wird). Navigieren Sie zu dem Verzeichnis, in dem diese Verknüpfung platziert wurde, klicken Sie mit der rechten Maustaste auf die Verknüpfung und wählen Sie "Eigenschaften", um das Ziel zu ändern. Wählen Sie die Registerkarte "Allgemein", um den Namen der Verknüpfung zu ändern. Die Verknüpfung wurde hier gelegt:

C: \ Users [Benutzer] \ AppData \ Roaming \ Microsoft \ Internet Explorer \ Quick Launch \ Fixierte User \ TaskBar

Sie können zu diesem Verzeichnis navigieren und die Eigenschaften der bearbeiten "Bilder" Verknüpfung.