Como cambiar el Icono de las Carpetas ?

Iniciado por MaX2, 9 Diciembre 2013, 09:39 AM

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

MaX2

Que tal compañero, ya sé que la pregunta de cómo cambiar un icono a una carpeta es fácil, pero yo lo he complicado un poco, primero el código que hay en el archivo desktop.ini lo tengo que poner manualmente porque tiene que valer también para cuando esa carpeta se encuentre en un lápiz USB, y segundo las librerías que contienen los iconos están dentro de una determinada carpeta, la cual puede cambiar de lugar dependiente de si se encuentra en un lápiz o disco duro.

Esa librería con iconos está dentro de una carpeta "Configuración", y ésta carpeta se encuentra dentro de otra:

C:\Aplicación\Configuración


Si copiamos esas carpetas a otra unidad la letra cambia, pero seguirá estando en:

--\Aplicación\Configuración


Dentro de la carpeta "aplicación" hay más carpetas y subcarpetas, y todas llevarían un icono

--\Aplicación\Documento1

--\Aplicación\Documento1\Documento2


El código que utilizo es este, pero no funciona:

desktop.ini
[.ShellClassInfo]
IconResource=\Configuración\Librería.dll,48
IconFile=\Configuracion\Librería.dll
IconIndex=48


Por más vueltas que le esto dando no consigo que muestre los iconos, sabe alguien como tendría que se ese código?


P.D. utilizo dos códigos diferentes para que los iconos de las carpetas se puedan ver en Windows XP, y Windows superiores.


Salu2.

Eleкtro

#1
Hola

Es tan sencillo como hacer esto:

[.ShellClassInfo]
IconResource=\..\Aplicación\Configuración\Librería.dll,48


\..\ = Letra de unidad de origen.




Ahora bien, si me permites un par de consejos:

1. Deberías extraer el icono 48 de esa dll, y en caso de que el icono contenga varias capas, quedarte sólamente con la más grande (a ser posible 256x256), todo esto para ahorrar el mayor espacio posible.

2. En caso de que quieras usar un icono diferente para cada carpeta coloca el icono en el directorio, junto al archivo ini, solo tendrías que hacer esto:

[.ShellClassInfo]
IconResource=icono.ico,0


Comprendo muy bien el fastidio que supone editar contínuamente el contenido del desktop.ini, por eso si te fijas yo lo que hago es especificar el mismo nombre para todos los iconos (icono.ico), y así solo tengo que copiar el mismo desktop.ini al directorio que yo quiera, sin requerir modificaciones de texto.

Esa es la manera en la que yo lo hago cuando requiero asignar distintos iconos:

(Click para agrandar)


Saludos








MaX2

Gracias EleKtro H@cker, y perdona que no respondiese antes, me esperaba recibir una notificación de nuevas respuestas en el correo, y no he recibido ninguna.

El problema es éste, \..\ = Letra de unidad de origen. no puedo poner la letra, porque el lapiz dependiendo en el ordenador que se ponga, le asigna una letra diferente.

Tambien he pensado poner una carpeta oculta en el raiz, pero como la aplicación tiene muchas carpetas, me gustaría que todas estuviesen dentro de una carpeta.


Salu2.

Eleкtro

@Max2

Creo que no lo entendiste bien...

Citar\..\ = Letra de unidad de origen.

Con eso sólamente te expliqué el equivalente del parámetro, no me refería a que debías reemplazar esos caracteres para especificar una letra,
es decir, tu copialo tal cual lo puse.

Esto:
CitarIconResource=\..\Aplicación\Configuración\Librería.dll,48

Tiene el mismo resultado que esto otro:
IconResource=X:\Aplicación\Configuración\Librería.dll,48

Saludos








gigamurki

yo tambien andaba buscando eso. intentare.
El mundo es mejor si compartes lo que sabes !

MaX2

Hola EleKtro H@cker, ya lo he probado y funciona bien, pero me he encontrado con un pequeño problema, no se si se podrá solucionar, y es en el caso de que la primera carpeta que es la que contiene todas las demas, cambie de nombre, o sea, yo la llamo "Aplicacion", pero si alguien en lugar de llamarla así la llama "Programa" los iconos ya no se mostrarían, se podria hacer algo en este caso?

Y también esta la posibilidad de que alguien utilice todo el lapiz usb para tener solo esta aplicación, por lo que decide de copiarlo todo en el raíz, vamos sin estar dentro de una carpeta, hay solución para este caso?

aunque en este caso me imagino se podría duplicar la linea de código y quitar parte de el, por ejemplo:

IconResource=\..\Configuración\Librería.dll,48
IconResource=\..\Aplicación\Configuración\Librería.dll,48



Salu2.

Eleкtro

#6
Cita de: MaX2 en 12 Diciembre 2013, 18:37 PM
en el caso de que la primera carpeta que es la que contiene todas las demas, cambie de nombre, o sea, yo la llamo "Aplicacion", pero si alguien en lugar de llamarla así la llama "Programa" los iconos ya no se mostrarían, se podria hacer algo en este caso?

No, eso ya es algo imposible, si los nombres no fuesen demasiado distintos podrías usar los nombres cortos DOS 8.3 http://en.wikipedia.org/wiki/8.3_filename , pero en tu caso no es posible adivinar el nombre de una carpeta que no se conoce...en un INI.

Cita de: MaX2 en 12 Diciembre 2013, 18:37 PMY también esta la posibilidad de que alguien utilice todo el lapiz usb para tener solo esta aplicación, por lo que decide de copiarlo todo en el raíz, vamos sin estar dentro de una carpeta, hay solución para este caso?

La única solución es especificar la ruta de la raiz del dispositivo, en el parámetro del INI:

IconResource=\..\Librería.dll,48

No puedes especificar dos valores distintos para un mismo parámetro.

Como sugerencia podrías poner los archivos en modo solo lectura, así los menos intleigentes no los podrían copiar fácilmente a otro directorio, o si son algo inteligentes deducirían que si están en solo lectrua es por alguna buena razón xD.

Saludos








MaX2

Gracias EleKtro H@cker, voy a dejar las carpetas con el nombre que yo le de, así no lo complico mas, el que quiera tenerlo así con ese nombre, pues bien, y el que no tambien, jeje.

P.D. sigo peleandome con lo otro jeje.

Gracias.