delphi
uses Registry, WinProcs, SysUtils; const // WallPaperStyles WPS_Tile = 0; WPS_Center = 1; WPS_SizeToFit = 2; WPS_XY = 3; // // sWallpaperBMPPath // - Ruta de la imagen // // nStyle // - cualquiera de WallPaperStyles // // nX, nY // - son los nStyle establecidos en WPS_XY, // nX y nY pueden ser usados para establecer // la posición exacta del papel tapiz // procedure Asignarfondo( sWallpaperBMPPath : string; nStyle, nX, nY : integer ); var reg : TRegIniFile; s1 : string; X, Y : integer; begin // // cambiar registro // // HKEY_CURRENT_USER\ // Control Panel\Desktop // TileWallpaper (REG_SZ) // Wallpaper (REG_SZ) // WallpaperStyle (REG_SZ) // WallpaperOriginX (REG_SZ) // WallpaperOriginY (REG_SZ) // reg := TRegIniFile.Create( 'Control Panel\Desktop' ); with reg do begin s1 := '0'; X := 0; Y := 0; case nStyle of WPS_Tile : s1 := '1'; WPS_Center: nStyle := WPS_Tile; WPS_XY : begin nStyle := WPS_Tile; X := nX; Y := nY; end; end; WriteString( '', 'Wallpaper', sWallpaperBMPPath ); WriteString( '', 'TileWallpaper', s1 ); WriteString( '', 'WallpaperStyle', IntToStr( nStyle ) ); WriteString( '', 'WallpaperOriginX', IntToStr( X ) ); WriteString( '', 'WallpaperOriginY', IntToStr( Y ) ); end; reg.Free; // // deje que todos sepan que hemos cambiado // un sistema de parámetros // SystemParametersInfo( SPI_SETDESKWALLPAPER, 0, Nil, SPIF_SENDWININICHANGE ); end;
Hay dos formas de llamar esa función:
delphi
// establecer el fondo a winnt.bmp y // el tramo para que se adapte a la pantalla Asignarfondo( 'c:\winnt\winnt.bmp', WPS_SizeToFit, 0, 0 );
delphi
// establecer el origen del papel // a (10, 200) Asignarfondo( 'c:\winnt\winnt.bmp', WPS_XY, 10, 200 );
Alguna duda y/o pregunta sobre este truco puedes abrir un hilo en el foro adecuado.
Saludos.