2009-06-09 16 views
26

Quiero personalizar el icono que se muestra en la barra de tareas de Windows 7. Cuando mi aplicación se está ejecutando, puedo hacerlo cambiando el ícono de la ventana principal pero, cuando se fija la aplicación, se muestra el ícono del ejecutable.Cambiar el icono de la barra de tareas anclado (windows 7)

¿Cómo puedo configurar el ícono de la barra de tareas para mi aplicación en un ícono diferente del que está incrustado dentro del exe?

No intentado, este solution puede funcionar, pero se ve sucio.


Editar:

Nuestra aplicación se compila una vez, pero dependiendo de archivo de configuración, características están habilitadas o no por lo que es un producto u otro. No deseamos compilar un exe para cada producto. La solución anterior puede no funcionar ya que muchas instancias de mi aplicación pueden instalarse en diferentes pathes ?

+0

Supongo que no habría soporte para esto, solo porque si fijara un ícono, asumiría que el ícono no cambiaría a otra cosa más adelante. Superposiciones que pude entender, pero no un ícono de IE convirtiéndose en un ícono de Firefox al hacer clic. –

+0

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

Respuesta

24

EDITAR La información a continuación es un poco obsoleta; Todas las novedades de Windows 7 bits están ahora disponibles como una API administrada, disponible aquí: http://code.msdn.microsoft.com/WindowsAPICodePack

Hay una series of articles en la nueva API de la barra de tareas por el gurú depuración Sasha Goldshtein. Deberías echarle un vistazo al Overlay Icons and Progress Bars API.

Puede descargar el código de muestra de Windows 7 Taskbar Developer Resources en Microsoft Code. Lo que estamos buscando es la IMClient muestra:

La muestra IMClient demuestra cómo los iconos de superposición barra de tareas y barra de tareas barras de progreso se iluminará botón de la barra de tareas de una aplicación lugar de confiar en un cuadro de diálogo adicional o en un ícono en el área de notificación del sistema (bandeja).

alt text alt text alt text

creo que esto debería ayudar a conseguir lo que quiere.

+0

Lo sé, ya estoy usando los iconos de superposición/pgbar en mi aplicación, pero la superposición no es lo mismo que el icono de la aplicación. La superposición no se muestra cuando la aplicación está inmovilizada y cerrada ... –

0

Eche un vistazo a this blog. Él hace una serie de publicaciones en el blog sobre la programación de la barra de tareas de Windows 7, así que tal vez eso lo guiará en la dirección correcta.

1

Puede hacerlo utilizando la biblioteca llamada "Puente de Windows 7" que se basa en el "Puente de Windows Vista".

Se trata de contenedores gestionados alrededor de todas las funciones nativas de Vista y Windows 7.

Más información se puede encontrar here

+0

Conozco esta biblioteca, ¿me puede dar más información (muestra ...) sobre cómo lograr esto? –

1

No sé si estoy entender su problema, pero ..

Si crea una aplicación y poner la propiedad icono de la ventana principal, aparecerá el icono en la barra de tareas también. Pero, si lo pin-it a la barra de tareas, ese ícono desaparece. ¿Estoy en lo cierto?Si es así, vaya a las propiedades del proyecto y en la pestaña de la aplicación, coloque el ícono que desea para el exe. Ahora, verá ese icono en la barra de tareas cuando esté inmovilizado.

Puedo usar el mismo icono para ambas cosas: P

+0

Tiene razón para la primera parte. Pero el icono de mi ventana principal no es el mismo ya sea que esté presente o no un archivo de configuración. Quiero que este ícono permanezca incluso cuando la aplicación esté anclada sin compilar un exe para cada configuración. –

+0

¿Qué quiere decir con "compilar un exe para cada configuración"? En Windows 7, el ícono de la barra de tareas y el ícono del título de Windows son los mismos (usando la propiedad Icon en la ventana principal). Pero, el ícono fijado, es el ícono .exe. Si solo tiene un .exe y desea fijarlo, coloque un ícono en ese .exe y cuando se fije la aplicación, verá ese ícono. En resumen, use el mismo ícono para ambas cosas. –

+0

Estoy trabajando en la versión 3 de la aplicación (lite, normal, pro). El marketing nos pide que establezcamos diferentes iconos para cada versión. La versión se determina desde la clave config + serial y no queremos producir un exe para cada versión solo para cambiar el ícono. Sé que es posible cambiar el ícono (ver el enlace en mi pregunta) pero como está basado en el nombre del exe, fallará si el usuario tiene dos o más versiones instaladas. Creo que no es posible y tenemos que quedarnos con un icono o compilar muchos archivos. –

0

no puedo probar esto ahora por desgracia, pero tal vez sólo la creación de una, el bueno de acceso directo normal podría resolver el problema? Cree un acceso directo a la aplicación, cambie el ícono y luego fije el atajo en lugar de la aplicación en sí.

comprobará la próxima vez que puedo acceder a mi máquina de Windows 7 ...

16

Al anclar una aplicación a la barra de tareas, simplemente crea un acceso directo en el siguiente directorio:

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

Debería poder identificar dónde está el acceso directo (es decir, obtener KnownFolders y trabajar desde allí. UserAppData debería ser el único), y luego usar P/Invoke (IShellLink), puede alterar el icono que el atajo está configurado para usar. La máquina podría necesitar un reinicio para que esto surta efecto, pero debería funcionar.

Si mantiene presionada la tecla Mayús mientras hace clic con el botón derecho en la aplicación anclada y selecciona Propiedades, puede ver el botón Cambiar icono para el acceso directo. Esto es básicamente lo que necesita emular con el código.

Definitivamente, todas estas cosas se pueden hacer con el código, pero si usted piensa que son mejores que la configuración de registro depende de usted.

+0

Desafortunadamente no puedo manejarlo cuando el usuario mismo intenta fijar la aplicación. Tal vez con un reloj en el directorio ... realmente sucio! –

+4

La barra de inicio rápido normalmente se considera fuera de los límites de una aplicación como parte de las preferencias del usuario, por lo que el usuario debe dejar que administre esa área. –

+0

Excelente información, incluso si uno no está tratando de hacer esto en el código. Gracias. – mlibby

1

Por lo que puedo decir, por alguna razón no puede cambiar el icono de un programa que ya está anclado en la barra de tareas. Para hacerlo, solo destrabe el programa, ubíquelo en el menú de inicio, haga clic con el botón derecho - propiedades - cambie el ícono. luego vuelva a fijarlo en la barra de tareas, ¡y tendrá el nuevo ícono!

0

Haga clic derecho en el ícono fijado, en la ventana emergente verá el título de los programas, allí haga clic con el botón secundario nuevamente y vaya a las propiedades. Allí puede cambiar el icono haciendo clic en el botón "cambiar ícono". Para mí, necesitaba un reinicio para finalizar los cambios.

-1

Si desea tener un acceso directo en la barra de tareas que va directamente a algún lugar útil, como su directorio "Mis documentos". La solución fácil . .

Coloque una carpeta en la barra de tareas (que crea un acceso directo a las imágenes). Navegue hasta el directorio donde se colocó el acceso directo, haga clic con el botón derecho en el acceso directo y seleccione "propiedades" para cambiar el destino. Seleccione la pestaña "general" para cambiar el nombre del atajo. El acceso directo se colocó aquí:

C: \ Users [usuario] \ AppData \ Roaming \ Microsoft \ Internet Explorer \ Quick Launch \ Usuario Fijado \ TaskBar

Puede dirigirse a este directorio y editar las propiedades de la atajo de "imágenes".

Cuestiones relacionadas