none
Cambiar icono en tiempo de ejcucion RRS feed

  • Pregunta

  • Hola:

    He cambiado el icono de mi aplicacion (me refiero al icono del EXE, no del form).

    ¿Es posible cambiar el icono (exe) en tiempo de ejecucion?


    Reinaldo

    lunes, 12 de marzo de 2018 12:36

Respuestas

  • El icono de aplicaci'on (a diferencia del icono de un form) esta embebido directamente dentro del exe, y el sistema lo lee de ahi incluso aunque el exe no se ejecute. Para cambiarlo, habria que reescribir el ejecutable, pero si el ejecutable esta ejecutándose no se puede escribir en él porque el sistema lo mantiene bloqueado. Asi que no se puede cambiar el propio icono en tiempo de ejecución.

    Pero si lo que quieres es mostrar algo distinto en la barra de tareas (y no en el explorador de windows), eso sí que se puede cambiar. La barra muestra el icono del formulario (no el icono de aplicación) y el del formulario sí que se puede cambiar en tiempo de ejecución. Es más, hay una serie de APIs, que podrías llamar mediante P/Invoke, que te permiten hacer cosas como mostrar un indicador de progreso o superponer un pequeño icono por encima del icono del programa en la barra de tareas.

    • Marcado como respuesta Paradisus lunes, 12 de marzo de 2018 19:36
    lunes, 12 de marzo de 2018 13:54
    Moderador

Todas las respuestas

  • El icono de aplicaci'on (a diferencia del icono de un form) esta embebido directamente dentro del exe, y el sistema lo lee de ahi incluso aunque el exe no se ejecute. Para cambiarlo, habria que reescribir el ejecutable, pero si el ejecutable esta ejecutándose no se puede escribir en él porque el sistema lo mantiene bloqueado. Asi que no se puede cambiar el propio icono en tiempo de ejecución.

    Pero si lo que quieres es mostrar algo distinto en la barra de tareas (y no en el explorador de windows), eso sí que se puede cambiar. La barra muestra el icono del formulario (no el icono de aplicación) y el del formulario sí que se puede cambiar en tiempo de ejecución. Es más, hay una serie de APIs, que podrías llamar mediante P/Invoke, que te permiten hacer cosas como mostrar un indicador de progreso o superponer un pequeño icono por encima del icono del programa en la barra de tareas.

    • Marcado como respuesta Paradisus lunes, 12 de marzo de 2018 19:36
    lunes, 12 de marzo de 2018 13:54
    Moderador
  • hola

    >>¿Es posible cambiar el icono (exe) en tiempo de ejecucion?

    porque querrias hacer esto ? no tiene mucho sentido

    ademas una vez que compilas no puede modificar dinamicamente un binario, aunque este sea codigo intermedio MSIL, porque esta claro que .net no genera codigo maquina sino codigo intermedio, por eso necesitas del framework

    pero mas alla de eso el icono es parte de la settings del proyecto, es como querer cambiar la version del framework de .net en runtime

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 12 de marzo de 2018 14:01
  • Si la barra de tareas muestra el icono del form ya me va bien, pero no estoy seguro de ello.

    Ya que inicialmente cambie en el form principal y al mimizar no aparecia y al cambiar en el exe si.


    Reinaldo

    lunes, 12 de marzo de 2018 19:16
  • Lo que pretendo es que en la barra de tareas el icono cambien en funcion del timer asociado a la aplicacion.

    Asi tendria una orientacion visual del que el timer esta funcionando correctamente.


    Reinaldo

    lunes, 12 de marzo de 2018 19:18
  • Efectivamente el icono del form es el que se visualiza en la barra de tareas. 

    Reinaldo

    lunes, 12 de marzo de 2018 19:35