FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
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” |
#2
|
||||
|
||||
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. |
#3
|
|||
|
|||
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” |
#4
|
||||
|
||||
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í. Última edición por dec fecha: 03-07-2005 a las 00:04:48. Razón: (corrección del texto) |
#5
|
||||
|
||||
Cita:
Para el icono de Mi PC intenten con la clave {20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon // Saludos |
#6
|
|||
|
|||
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” |
#7
|
|||
|
|||
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;
__________________
“Daría todo lo que sé por la mitad de lo que ignoro” |
|
|
|