Este truco sólo sirve para windows XP, aquí enseñaré cómo asignar el fondo de escritorio de tu windows desde tu aplicativo, vamos a crear un procedimiento llamada «Asignarfondo()», con ella tendremos la capacidad de establecer la posición exacta del papel tapiz y la capacidad de cambiar el tamaño de la imagen de fondo para la pantalla, a continuación el código:
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:
// 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 );
// establecer el origen del papel
// a (10, 200)
Asignarfondo(
'c:\winnt\winnt.bmp',
WPS_XY, 10, 200 );
Hasta ahora sólo he podido hacer funcionar con archivos .BMP, cualquier ayuda le será agradecido. Espero que la puedan disfrutar 😉
Saludos.
Link relacionados:
http://www.delphiaccess.com/forum/index.php?topic=101.0;topicseen