Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > API de Windows
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-07-2005
tiel tiel is offline
Miembro
 
Registrado: jul 2003
Ubicación: México, D.F.
Posts: 29
Poder: 0
tiel Va por buen camino
Question Cambiar iconos del escritorio de Windows

Me he estado preguntando... ¿mediante la API es posible cambiar los iconos del escritorio de Windows? Pero más específicamente cambiar los iconos de 'Mi PC', 'Papelera', por otros que yo defina.

Agradecería que alguien me explicara como se lograría esto, he estado 'jugando' con la API, usando el Handle del escritorio manejado como ListView, y usando varias funciones como ListView_SetImageList y ListView_SetItem, pero no he logrado nada, agradecería mucho si alguien me proporcionara información al respecto.
__________________
“Daría todo lo que sé por la mitad de lo que ignoro”
Responder Con Cita
  #2  
Antiguo 02-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

En este artículo de CodeCentral se ofrece lo que parece la solución a tu cuita, a lo menos parcialmente. Puede ser un comienzo.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #3  
Antiguo 02-07-2005
tiel tiel is offline
Miembro
 
Registrado: jul 2003
Ubicación: México, D.F.
Posts: 29
Poder: 0
tiel Va por buen camino
Creo que no

Ya leí el artículo y más bien te explican como cambiar el icono de una carpeta basado en el Desktop.ini, pero no inidica la manera de cambiar los iconos del escritorio, que es lo que busco.

Gracias.
__________________
“Daría todo lo que sé por la mitad de lo que ignoro”
Responder Con Cita
  #4  
Antiguo 03-07-2005
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

No solamente lo explican, se puede descargar un ejemplo y funciona, pero, es verdad, no es del todo lo que buscas. Buscando en Google encuentras el modo de cambiar el icono de la papelera de reciclaje, y, si es la única manera de hacerlo (parece haber unanimidad) y hay que hacer lo propio con el icono "Mi PC" (del cual no encontré referencia alguna, bien es verdad que Internet da para más) digo, me parece una chapuza.

Se trata (como podrás comprobar si echas un vistazo a los resultados de Google) de cambiar cierta información del Registro de Windows: en alguna página se dice que va bien en todas las versiones de Windows desde la 95 en adelante: lo cierto es que aquí en Windows XP la clave que hay que utilizar existe, tal como proponen. Es una GUID (¿Global Unique Identifier?) y no sé hasta qué punto querrás meter mano al asunto por ahí.
__________________
David Esperalta
www.decsoftutils.com

Última edición por dec fecha: 03-07-2005 a las 00:04:48. Razón: (corrección del texto)
Responder Con Cita
  #5  
Antiguo 03-07-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por dec
me parece una chapuza.
¿Por qué te parece una chapuza? En algún lugar debe guardarse la información del icono que se va a usar ¿no? ¿Y qué mejor lugar que el registro de Windows?

Para el icono de Mi PC intenten con la clave

{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon

// Saludos
Responder Con Cita
  #6  
Antiguo 03-07-2005
tiel tiel is offline
Miembro
 
Registrado: jul 2003
Ubicación: México, D.F.
Posts: 29
Poder: 0
tiel Va por buen camino
OK, ya todo claro

Bueno, muchísimas gracias por sus pistas, ya encontré la clave de registro a donde se guardan los settings de los iconos del escritorio, en HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID

Pero ahora tengo otra duda, quisiera saber cómo puedo 'actualizar' el escritorio sin tener que reiniciar la sesión, porque cuando hago los cambios en el registro tengo que reiniciar sesión para ver los iconos cambiados.

Les agradecería mucho si me contestaran esta nueva duda.
__________________
“Daría todo lo que sé por la mitad de lo que ignoro”
Responder Con Cita
  #7  
Antiguo 03-07-2005
tiel tiel is offline
Miembro
 
Registrado: jul 2003
Ubicación: México, D.F.
Posts: 29
Poder: 0
tiel Va por buen camino
Listo

Bueno, respecto al mensaje anterior, ya encontré la manera, lo saqué de una página con un ejemplo en C++ usando la API para simular la tecla 'F5'.

http://www.codeproject.com/system/co...sh_desktop.asp

Y lo implementé de la siguiente manera:

Código:
var
   Desktop_handle: THandle;
   res: Cardinal;
   reg: TRegistry;
   icon_size: String;
begin

   Desktop_handle := FindWindow('Shell_traywnd', nil);

   SendMessage(desktop_handle, WM_SETREDRAW, 0, 0);

   Reg := TRegistry.Create;
   Reg.RootKey := HKEY_CURRENT_USER;
   Reg.OpenKey('Control Panel\Desktop\WindowMetrics', false);
   icon_size := Reg.ReadString('Shell Icon Size');
   Reg.WriteString('Shell Icon Size', IntToStr( StrToInt(icon_size)+1 ) );

   SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE,SPI_SETNONCLIENTMETRICS, 0,SMTO_ABORTIFHUNG, 100000, res);

   Reg.WriteString('Shell Icon Size', icon_size);
   Reg.closekey;
   Reg.Free;

   SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE,SPI_SETNONCLIENTMETRICS, 0,SMTO_ABORTIFHUNG, 100000, res);


   SendMessage(desktop_handle, WM_SETREDRAW, 1, 0);

end;
Muchas gracias a todos
__________________
“Daría todo lo que sé por la mitad de lo que ignoro”
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 13:58:38.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi