Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-05-2005
diegohdv diegohdv is offline
Registrado
 
Registrado: may 2005
Posts: 1
Poder: 0
diegohdv Va por buen camino
Smile Cambiar wallpaper en windows xp

Hola a todos; como este es mi primer mensaje en este foro creo que lo correcto seria que me presente, mi nombre es Diego, soy de Argentina. Estoy empezando a incursionar en la programacion en delphi y estaba tratando de hacer una aplicacion que cambie el wallpaper de windows, he conseguido que me funcione a medias, ya que solo me cambia el fondo si reinicio la maquina. Al ejecutar la aplicacion lo unico que consigo es dejar el fondo en azul y nada mas. Espero puedan ayudarme. Desde ya muchisimas gracias.

Este es el codigo que he escrito para tal motivo:

//********************Busca información en el sistema
procedure busca_info(var user:string; var ruta:string);
var
buffer:array[0..255] of char;
tamano:dword;
Reg:TRegistry;
begin
tamano:=256;
GetUserName(buffer,tamano);
user:=buffer;
Reg:=TRegistry.Create;
Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders',False);
ruta:=Reg.ReadString('Local Appdata');
Reg.Free;
end;//de busca_info
//********************

//********************Copia Archivos al disco
procedure copia_archivo();
var ruta:string;
usuario:string;
caracter:char;
begin
busca_info(usuario,ruta);
caracter:=ruta[1];
FileSetAttr(ruta+'\Microsoft\wallpaper1.bmp',32);
copyfile(Pchar(caracter+':\windows\wallpaper1.bmp'),Pchar(ruta+'\Microsoft\wallpaper1.bmp'),False);
FileSetAttr(ruta+'\Microsoft\wallpaper1.bmp',32);
FileSetAttr(caracter+':\Windows\Web\Wallpaper\Fondo.jpg',32);
copyfile(Pchar(caracter+':\windows\fondo.jpg'),Pchar(caracter+':\Windows\Web\Wallpaper\Fondo.jpg'),F alse);
end;//de copia_archivo
//********************

//********************Modifica registro de windows
procedure modif_registro();
var
Reg:TRegistry;//Puntero al registro
usuario:string;
ruta:string;
caracter:char;
begin
busca_info(usuario,ruta);
caracter:=ruta[1];
Reg:=TRegistry.Create;
Reg.OpenKey('Control Panel\Desktop',False);
Reg.WriteString('ConvertedWallpaper',caracter+':\windows\Web\Wallpaper\Fondo.jpg');
Reg.WriteString('WallpaperStyle','2');
Reg.WriteString('TileWallpaper','0');
Reg.WriteString('Wallpaper',ruta+'\Microsoft\Wallpaper1.bmp');
Reg.WriteString('OriginalWallpaper',ruta+'\Microsoft\Wallpaper1.bmp');
Reg.Free;
end;
//********************

procedure SetWallpaper(Filename: TFilename; Mosaico: boolean);
var
sTiled: string;
begin
copia_archivo();
modif_registro();
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
Pointer(Filename), SPIF_UPDATEINIFILE);
end;


procedure TForm1.Button1Click(Sender: TObject);
var ruta:string;
usuario:string;
begin
SetWallpaper('c:\windows\web\wallpaper\fondo.jpg', true);
end;

Explico un poquito que hace cada cosa asi lo pueden seguir mas rapido.
Es conveniente que explique que lo hise asi porque cambio el fondo desde windows y verifique que estos son los cambios qeu se realizan.

El procedimiento busca_info busca cual es el usario corriente ya que en el registro debo modificar una calve en la que necesito saber cual es el usuario.
El procedimiento modif_registro es el que me modifica las claves necesarias en el registro.
El procedimiento copia_archivos copia los archivos necesarios en el lugar correto como si el cambio lo hubiese echo windows (o al menos eso creo yo)
Esta funcion "SystemParametersInfo" la encontre buscando en internet, pero lo mismo no me funciona, sigo teniendo que reinicar la maquina para que me tome los cambios.
Espero puedan ayudarme, y si me complique demasiado acepto criticas, desde ya muchisimas gracias.
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 09:49:51.


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