Cambiar Icono

Iniciado por Jeezy, 26 Mayo 2018, 22:38 PM

0 Miembros y 1 Visitante están viendo este tema.

Jeezy

Hola quisiera crear una aplicacion en el lenguaje C# para cambiarle el icono a otras aplicaciones , que tendria que hacer???

Eleкtro

Cita de: Jeezy en 26 Mayo 2018, 22:38 PMque tendria que hacer???

Basicamente: manipular la tabla de recursos del archivo executable en cuestión para reemplazar el archivo de icono, por otro distinto...


Es algo que requiere mucho P/Invoking, si le vas a dar poca reusabilidad al código entonces casi mejor sería preferible utilizar cualquier herramienta por linea de comandos tipo Resource Hacker.

Saludos.








Jeezy

Estuve intentando usar el resource hacker pero no me cambiaba todos los iconos entonces estoy intentando hacerlo de otra forma

Eleкtro

#3
Lee las soluciones:

Suponiendo que sepas el nombre o identificador del recurso de icono que quieres reemplazar, es pan comido, de lo contrario tienes que enumerar los recursos de icono (ya te indiqué la documentación de MSDN para aprender a enumerar recursos) puesto que no siempre el icono principal va a tener el mismo identificador, ni va a usar un identificador en vez de un nombre.

De todas formas siempre que utilices correctamente los parámetros de Resource Hacker no vas a tener problemas con él.




EDITO:

Cita de: Eleкtro en 27 Mayo 2018, 00:29 AM
Es algo que requiere mucho P/Invoking, si le vas a dar poca reusabilidad al código entonces casi mejor sería preferible utilizar cualquier herramienta por linea de comandos tipo Resource Hacker.

Cuando dije de usar Resource Hacker no recordaba que existía esta librería open-source para .NET, la cual tenía guardada por ahí pero creo que nunca le llegué a usar:

Puedes descargar dicha librería y usarla tal cual, o puedes destripar del código fuente lo que no necesites y copiar de esta clase solamente las estructuras nativas o P/Invoking necesario para tus fines:

( para reemplazar un icono solo necesitas las definiciones de las funciones BeginUpdateResource, UpdateResource y EndUpdateResource; para reemplazar un grupo de iconos necesitas también usar la estructura GRPICONDIR y GRPICONDIRENTRY)

Ejemplo de uso:

Como ya dije creo que nunca le llegué a usar (yo hago este tipo de modificaciones con mis propios wrappers de las funciones nativas de Windows, algunas ya mencionadas), así que no puedo recomendar esa librería, pero creo que usar Resource Hacker en general debería aportar mayor seguridad contra posibles errores de cualquier tipo... simplemente por popularidad, veteranía/experiencia y profesionalidad del autor.

Saludos.