FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
||||
|
||||
iconos de carpeta
hola a todos
quisiera saber si hay una manera de personalizar el icono de una carpeta atravez de una aplicacion en delphi, algo mas o menos asi
gracias por la ayuda brindada de antemano |
#2
|
||||
|
||||
Creo que lo que estas buscando es algo como la personalización de una carpeta no? en tal caso deberías usar la escritura de un archivo de "texto", pues la información que lee la Shell viene de un archivo Desktop.ini con atributos HS en la carpeta personalizada, la información que éste archivo contiene es algo como ésto:
Código:
[.ShellClassInfo] IconFile=%SystemRoot%\system32\SHELL32.dll IconIndex=20 |
#4
|
||||
|
||||
Lo que quizo decir cHackAll es que tienes que tener en la carpeta a personalizar un archivo llamado "Desktop.ini" con los atributos de Oculto (H) y Archivo de Sistema (S) , el cual se comporta como un archivo de registro, y debes acceder a él a través del componente TIniFile, guardando en los valores "IconFile" e "IconIndex" los datos referidos al ícono. Vaya el ejemplo: suponiendo que la carpeta es "Archivos de Programa" y el ícono es "C:\MiIcono.ico" sería:
El "0" de "IconIndex" se refiere al número del ícono dentro del archivo, en este caso se utiliza el primer ícono del archivo "MiIcono.ico", pero puedes referirte a un ejecutable como "mplayer.exe" y obtener el 3er ícono de ese archivo poniendo "3" en "IconIndex". Puede que el cambio de ícono no sea visible hasta que reinicies Windows porque éste usa una caché para mantener los íconos. También podría verse el cambio forzando a refrescar la caché de íconos, pero ese ya es otro tema. Espero te quede claro. |
#5
|
||||
|
||||
hola de nuevo y gracias por la ayuda prestada chackall y paldave
hice la prueba y lo que paso es que se creo un archivo desktop.ini dentro de la carpeta con el texto Código PHP:
|
#6
|
||||
|
||||
Quise responderte con anterioridad pero el post se me borro
Lo que intentaba darte era un código parecido al siguiente:
Lo pruebas de las tres formas, y si hay algún errorcillo de sintaxis te pido disculpas pero no tenía un IDE cerca Por lo que veía paldave te dio un ejemplo que hace lo mismo, y en ambos casos debería funcionar... PD: No va por ahí el problema, IconIndex=0 es lo correcto Saludos |
#7
|
||||
|
||||
al parecer aun hay un poblema no llega a compilar la varible desktop no puede ser definida como text, la cambie a string y el error paso a la linea con el siguiente desktop
podrias darle una mirada, no entiendo como manipular al archivo o variable desktop dentro de la procedure Código Delphi [-] Unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, IniFiles, StdCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); Procedure DefineIcon(Path, IconFile: string; IconIndex: Integer = 0); end; var Form1: TForm1; implementation procedure TForm1.Button1Click(Sender: TObject); begin DefineIcon('E:\Administrador\Mis documentos', 'E:\Administrador\Mis documentos\Nueva carpeta\Project1.exe'); End; procedure Tform1.DefineIcon(Path, IconFile: string; IconIndex: Integer = 0); var Desktop: text;// aqui se detiene. begin Path := Path + '\Desktop.ini'; AssignFile(Desktop, Path); ReWrite(Desktop); WriteLn(Desktop, '[.ShellClassInfo]'); WriteLn(Desktop, 'IconFile=' + IconFile); WriteLn(Desktop, 'IconIndex=' + IntToStr(IconIndex)); CloseFile(Desktop); end; end. Ojala no se llege a complicar , gracias y saludos cHackAll ..... |
#10
|
||||
|
||||
hola denuevo je je
bueno paldave dio en el clavo ya compila pero, no cambia el icono aun lo extraño es que si crea el archivo desktop.ini dentro de la carpeta y con el texto: [.ShellClassInfo] IconFile=E:\Administrador\Mis documentos\Nueva carpeta\casco IconIndex=0 la carpeta que quiero cambiar esta en E:\Administrador\Mis documentos se llama nueva carpeta y dentro esta el icono pero nada, creo que el problema ya no esta en la aplicacion sino en el archivo creado o me equivoco???? ayudenme por favor ya solo falta un pequeño paso. |
#11
|
||||
|
||||
Mencionas que el archivo queda como
Código:
[.ShellClassInfo] IconFile=E:\Administrador\Mis documentos\Nueva carpeta\casco IconIndex=0 Código:
[.ShellClassInfo] IconFile=E:\Administrador\Mis documentos\Nueva carpeta\casco.ico IconIndex=0 Como te dije antes el ícono no cambiará hasta que reinicies la máquina o refresques la caché de íconos de windows. Si no lo haces, es como que una vez que tuvieras cambiado el ícono de la carpeta y funcionando bien, editaras el archivo Desktop.ini con el block de notas, le cambiaras el ícono y lo volvieras a guardar. Evidentemente editarlo y cambiarlo con el block de notas no cambiará el ícono de la carpeta, ya que windows no lee el archivo desktop.ini de la carpeta cada vez que la muestra, sino que lo hace solo la primera vez que accedes a él y luego lo coloca en una caché para recuperarlo rápidamente cada vez que se muestre dicha carpeta, y dicha caché se mantiene hasta que reinicies Windows o lo fuerces a refrescarse, o lo vacíes. Para refrescar la caché de íconos se necesita de un procedimiento algo complicado, pero casualmente tengo el código que necesitas a mano:
Te aconsejo que uses la forma que yo te indiqué antes para acceder y/o crear el archivo Desktop.ini, ya que si usas la de cHackAll verás que si el archivo ya fué creado mediante "Personalizar Carpeta" por Windows y tiene los atributos de Oculto te dará un error al intentar acceder al mismo Deberás poner tu procedimiento así:
Espero que ahora sí puedas solucionar tu problema con los íconos. Ya lo he probado y funciona de maravillas. Última edición por paldave fecha: 26-08-2007 a las 16:35:51. Razón: error |
#12
|
||||
|
||||
hola a todos
disculpen por no haberme comunicado en buen tiempo, esque tuve una semana muy mala,.... pero bueno¡¡¡¡ volviendo al tema paldave los codigos que me das no me compilan en no tengo ni la mas minima idea de que pueda ser...... y sobre el texto en el archivo .ini creado, no hay problema alli, fue error mio al digitar la pregunta si hace la extencion casco.ini , y apesar de aver reiniciado ma maquina no cambia nada , esperando alguna ayuda o sugerencia me despido, chau... |
#13
|
||||
|
||||
Te ruego mil disculpas, tienes razón, el error fué mío ya que a pesar de que lo probé y funciona perfecto se me "coló" esa llamada a una función que es mía y es la llamada GetWindowsDir. Lo que sucede es que tengo miles de rutinas propias en bibliotecas que utilizo para facilitar la programación y algunas de ellas tienen nombre similar a las de Windows y hace tanto que las uso que a veces me olvido que son mías solamente
Algunas me ahorran pequeños trozos de código como la citada, pero cuando tienes que programar mucho esa pequeña ayuda se agradece. Va aquí el sencillo código de GetWindowsDir: Espero que no tengas más problemas. |
#14
|
||||
|
||||
hola de nuevo (paldave):
no puedo creer que me complique por esta aplicacion que deseo hacer; pero bueno tengo que conseguirlo. NO COMPILA aun con la funcion que me diste en la respuesta anterior, me parece que el problema va por la ubicacon de la función: debo declararlo como a los procedure?, o pornerlos defrente debajo de la zona privada o publica o talves debajo de:
sin declarlo, te recuerdo que son novato en esto pero con mucho interes en conocer mas. Te agradesco de ante mano la ayuda que me brindas y la ayuda que puedas darme con este nuevo paso. GRACIAS Y HASTA LA PROXIMA.... |
#15
|
||||
|
||||
Puedes ponerla en la sección Public de tu Form, algo así:
y luego la implementas como:
|
#16
|
||||
|
||||
Hola a todos
paldave PORFIN, ya compila y al presionar el boton actualiza sistema a la perfección con un solo inconveniente NO CAMBIA EL ICONO jajajajajajaja. se crea el archivo .ini correctamente [.ShellClassInfo] IconFile=E:\Administrador\disket\prueba de icono\casco.ico IconIndex=0 -queda claro entonces que el problema no es el programa ni codigos??? -puede ser el problema el archivo de icono?? estoy utilizando el microangelo para la creación del icono e incluso iconos comunes bajados de internet -la ubicación del archivo icono y la carpeta a modificar tiene algo que ver??? QUE SERA?????? |
#17
|
||||
|
||||
Pues sí que es raro, a mi me funciona perfectamente
¿No será que tienes un problema en el Sistema Operativo? Yo uso WinXP Professional con SP2. |
#18
|
||||
|
||||
hola a todos
si que raro, voya llevar la aplicación en otra computadora a ver si el problema es el sistema operativo. traere noticias.............. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Capturar ruta de acceso a la carpeta mis documentos y a la carpeta activa. | Pepe Torres | API de Windows | 1 | 23-02-2007 23:02:21 |
Iconos! | bustio | Varios | 10 | 04-09-2005 03:40:06 |
Iconos .bmp | CarmaZone | Varios | 2 | 11-03-2005 00:46:41 |
Iconos | Sirkius | Varios | 8 | 11-06-2004 20:34:31 |
iconos | aladelta | Gráficos | 1 | 09-09-2003 15:27:03 |
|