2009-06-09 9 views
26

Non voglio personalizzare l'icona visualizzata all'interno della barra delle applicazioni di Windows 7. Quando la mia app è in esecuzione, posso farlo cambiando l'icona della finestra principale ma, quando l'app è bloccata, viene visualizzata l'icona di exe.Cambia l'icona della barra delle applicazioni fissata (Windows 7)

Come è possibile impostare l'icona della barra delle applicazioni per la mia app su un'icona diversa da quella incorporata nell'ex?

Non provato, questo solution potrebbe funzionare ma sembra sporco.


Edit:

La nostra applicazione è stata compilata una volta, ma a seconda del file di configurazione, le funzioni sono attivate o meno quindi è un prodotto o di un altro. Non vogliamo compilare un exe per ogni prodotto.

La soluzione di cui sopra potrebbe non funzionare come molti casi di mia app possono essere installate in diversi sentieri (così si finisce con lo stesso nome del file exe ma diverse icone!), È questa chiave di registro mal progettato o mi manca qualcosa ?

+0

Vorrei assumere non ci sarebbe il supporto per questo, solo perché se ho appuntato un'icona, mi piacerebbe pensare che l'icona non cambierebbe in qualcos'altro in seguito. Sovrapposizioni Potrei capire, ma non un'icona di IE che diventa un'icona di Firefox quando si fa clic. –

+0

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

risposta

24

EDIT Le informazioni qui sotto è un po 'obsoleto; tutti i nuovi Windows 7 bit sono ora disponibili come API gestite, disponibili qui: http://code.msdn.microsoft.com/WindowsAPICodePack

C'è un series of articles sulla nuova API della barra delle applicazioni dal guru di debug Sasha Goldshtein. Dovresti dare un'occhiata allo Overlay Icons and Progress Bars API.

È possibile scaricare il codice di esempio da Windows 7 Taskbar Developer Resources su Microsoft Code. Quello che stai cercando è il campione IMClient:

Il campione IMClient dimostra come barra delle applicazioni icone di sovrapposizione e barra delle applicazioni barre di avanzamento può illuminare pulsante della barra delle applicazioni di un dell'applicazione invece di basarsi su una finestra di dialogo aggiuntiva o su un'icona nell'area di notifica del sistema (vassoio).

alt text alt text alt text

Credo che questo dovrebbe aiutarvi a raggiungere ciò che si desidera.

+0

Lo so, sto già usando le icone di sovrapposizione/pgbar nella mia app ma la sovrapposizione non è la stessa cosa dell'icona dell'app. L'overlay non viene mostrato quando l'app è bloccata e chiusa ... –

0

Dai un'occhiata allo this blog. Fa una serie di post sul blog sulla programmazione della barra delle applicazioni di Windows 7, quindi forse questo ti indicherà la giusta direzione.

1

È possibile farlo utilizzando la libreria denominata "Windows 7 Bridge" che si basa sul "Windows Vista Bridge".

Questi sono wrapper gestiti attorno a tutte le funzioni native di Vista e Windows 7.

Maggiori informazioni si possono trovare here

+0

So che questa libreria, si può fornire ulteriori informazioni (campione ...) su come raggiungere questo obiettivo? –

1

Non so se sto capire il vostro problema, ma ..

Se si crea un'applicazione e mettere la proprietà icona della finestra principale, l'icona apparirà nella barra delle applicazioni anche. Ma, se si pin-it alla barra delle applicazioni, quell'icona scompare. Ho ragione?In tal caso, vai alle proprietà del progetto e nella scheda dell'applicazione, inserisci l'icona che desideri per l'exe. Ora, vedrai quell'icona nella barra delle applicazioni quando appuntato.

Io uso la stessa icona per entrambe le cose: P

+0

Hai ragione per la prima parte. Ma l'icona della mia finestra principale non è la stessa se un file di configurazione è presente o meno. Voglio che questa icona rimanga anche quando l'app è bloccata senza compilare un exe per ogni configurazione. –

+0

Cosa intendi con "compilare un exe per ogni configurazione"? Su Windows 7, l'icona della barra delle applicazioni e l'icona del titolo di Windows sono uguali (usando la proprietà Icon nella finestra principale). Ma l'icona bloccata è l'icona .exe. Se hai solo un exe e vuoi pin-it, metti un'icona in quel file .exe e quando l'app è bloccata, vedrai quell'icona. In breve, usa la stessa icona per entrambe le cose. –

+0

Sto lavorando su 3 versioni dell'applicazione (lite, normale, pro). Il marketing ci chiede di impostare icone diverse per ogni versione. La versione è determinata da config + chiave seriale e non vogliamo produrre un exe per ogni versione solo per cambiare icona. So che è possibile cambiare l'icona (vedi link nella mia domanda) ma dato che si basa sul nome exe, fallirà se l'utente ha installato due o più versioni. Penso che non sia possibile e dobbiamo stare con un'icona o compilare molti ex. –

0

non riesco a provare questo momento, purtroppo, ma forse solo la creazione di un normale, il buon vecchio collegamento potrebbe risolvere il problema? Creare una scorciatoia per l'app, cambiare l'icona, quindi aggiungere il collegamento anziché l'app stessa?

controllerà quando posso prossima accedere alla mia macchina Windows 7 ...

16

Quando si pin un'applicazione alla barra delle applicazioni, si crea semplicemente una scorciatoia nella directory seguente:

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

Dovresti essere in grado di identificare dove si trova il collegamento (ad esempio, ottenere KnownFolders e lavorare da lì. UserAppData dovrebbe essere quello), e quindi usare P/Invoke (IShellLink), puoi modificare l'icona che il collegamento è configurato per usare. Potrebbe essere necessario riavviare la macchina affinché ciò abbia effetto, ma dovrebbe funzionare.

Se si tiene premuto Maiusc mentre si fa clic con il pulsante destro del mouse sull'applicazione bloccata e si seleziona Proprietà, è possibile visualizzare il pulsante Cambia icona per il collegamento. Questo è fondamentalmente ciò che devi emulare con il codice.

Tutte queste cose possono sicuramente essere fatte con il codice, ma se pensi che siano meglio delle impostazioni del registro dipende da te.

+0

Purtroppo non riesco a gestirlo quando l'utente stesso tenta di bloccare l'applicazione. Magari con un orologio nella directory ... veramente sporco! –

+4

La barra di avvio rapido dovrebbe normalmente essere considerata off limits per un'app come parte delle sue preferenze, quindi l'utente dovrebbe essere lasciato a gestire quell'area. –

+0

Informazioni eccellenti anche se non si sta tentando di farlo in codice. Grazie. – mlibby

1

Per quanto posso dire, per qualche motivo non è possibile modificare l'icona di un programma che è già bloccato sulla barra delle applicazioni. Per farlo, basta sbloccare il programma, individuarlo nel menu di avvio, fare clic destro - Proprietà - Cambia icona. quindi re-pin alla barra delle applicazioni, e avrà la nuova icona!

0

Fare clic con il tasto destro sull'icona appuntata, nel popup si vede il titolo del programma, si fa nuovamente clic con il pulsante destro del mouse e si passa alle proprietà. Qui puoi modificare l'icona facendo clic sul pulsante "cambia icona". Per me era necessario un riavvio per completare le modifiche.

-1

Se si desidera avere un collegamento nella barra delle applicazioni che vada direttamente in qualche posto utile, come la cartella "Documenti". La soluzione facile. . .

rilasciare una cartella nella barra delle applicazioni (che crea un collegamento alle immagini). Passare alla directory in cui è stato posizionato il collegamento, fare clic con il tasto destro del mouse sul collegamento e selezionare "Proprietà" per cambiare il target. Seleziona la scheda "generale" per cambiare il nome del collegamento. Il collegamento è stato collocato qui:

C: \ Users [utente] \ AppData \ Roaming \ Microsoft \ Internet Explorer \ Quick Launch \ User Pinned \ barra delle applicazioni

È possibile passare a questa directory e modificare le proprietà del scorciatoia "immagini".