procedure
TMainForm
.
SetWallpaper(AWallpaperStyle : TWallpaperStyle);
var
OldWallpaperFile :
String
;
OldWallpaperStyle :
String
;
OldTileWallpaper :
String
;
WallpaperFile :
String
;
Bmp : TBitmap;
Reg : TRegistry;
begin
OldWallpaperFile :=
''
;
WallpaperFile := GetWindowsFolerPath +
'ADPV Wallpaper.bmp'
;
Bmp := TBitMap
.
Create;
Try
MakeWallpaperBitmapFromImage(Bmp, AWallpaperStyle);
Bmp
.
SaveToFile(WallpaperFile);
Finally
Bmp
.
Free;
End
;
Reg := TRegistry
.
Create;
If
Reg
.
OpenKey(
'\Control Panel\Desktop'
,
True
)
Then
Begin
If
Reg
.
ValueExists(
'Wallpaper'
)
Then
OldWallpaperFile := Reg
.
ReadString(
'Wallpaper'
);
If
(OldWallpaperFile <>
''
)
And
(OldWallpaperFile <> WallpaperFile)
Then
Begin
If
Reg
.
ValueExists(
'WallpaperStyle'
)
Then
OldWallpaperStyle := Reg
.
ReadString(
'WallpaperStyle'
)
Else
OldWallpaperStyle :=
'2'
;
If
Reg
.
ValueExists(
'TileWallpaper'
)
Then
OldTileWallpaper := Reg
.
ReadString(
'TileWallpaper'
)
Else
OldTileWallpaper :=
'0'
;
Reg
.
WriteString(
'OldWallpaper'
,OldWallpaperFile);
Reg
.
WriteString(
'OldTileWallpaper'
,OldTileWallpaper);
Reg
.
WriteString(
'OldWallpaperStyle'
,OldWallpaperStyle);
End
;
If
AWallpaperStyle = wpsTile
Then
Reg
.
WriteString(
'TileWallpaper'
,
'1'
)
Else
Reg
.
WriteString(
'TileWallpaper'
,
'0'
);
If
AWallpaperStyle = wpsStretch
Then
Reg
.
WriteString(
'WallpaperStyle'
,
'2'
)
Else
Reg
.
WriteString(
'WallpaperStyle'
,
'0'
);
Reg
.
CloseKey;
End
;
Reg
.
Free;
SystemParametersInfo(SPI_SetDeskWallpaper,
0
,
PChar
(WallpaperFile),SPIF_UPDATEINIFILE
Or
SPIF_SENDWININICHANGE);
end
;