先修改注册表:
Reg:=TRegistry.Create;
try
begin
if Reg.OpenKey('Control Panel\DeskTop',false) then
begin
// TileWallpaper WallPaperStyle
//居中 0 0
//平铺 1 0
//拉伸 0 2
if ListView1.Items[CurrentWallpaper].SubItems[1]='居中' then
begin
TileWallpaper:=0;
WallPaperStyle:=0;
end
else if ListView1.Items[CurrentWallpaper].SubItems[1]='平铺' then
begin
TileWallpaper:=0;
WallPaperStyle:=2;
end
else
begin
TileWallpaper:=0;
WallPaperStyle:=2;
end; Reg.WriteString('TileWallPaper',IntToStr(TileWallpaper));
Reg.WriteString('WallPaperStyle',IntToStr(WallPaperStyle));
Reg.WriteString('WallPaper',ListView1.Items[CurrentWallpaper].SubItems[0]);
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;然后:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,nil,SPIF_SENDCHANGE);
Reg:=TRegistry.Create;
try
begin
if Reg.OpenKey('Control Panel\DeskTop',false) then
begin
// TileWallpaper WallPaperStyle
//居中 0 0
//平铺 1 0
//拉伸 0 2
if ListView1.Items[CurrentWallpaper].SubItems[1]='居中' then
begin
TileWallpaper:=0;
WallPaperStyle:=0;
end
else if ListView1.Items[CurrentWallpaper].SubItems[1]='平铺' then
begin
TileWallpaper:=0;
WallPaperStyle:=2;
end
else
begin
TileWallpaper:=0;
WallPaperStyle:=2;
end; Reg.WriteString('TileWallPaper',IntToStr(TileWallpaper));
Reg.WriteString('WallPaperStyle',IntToStr(WallPaperStyle));
Reg.WriteString('WallPaper',ListView1.Items[CurrentWallpaper].SubItems[0]);
end;
Reg.CloseKey;
end;
finally
Reg.Free;
end;然后:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,nil,SPIF_SENDCHANGE);
var
ImageFileType: String;
WinDirWPFile: PChar;
WinDirLen: integer;
myReg: TRegistry;
begin
WinDirWPFile := StrAlloc(256); //get the windows dir
WinDirLen := GetWindowsDirectory(WinDirWPFile, 0);
GetWindowsDirectory(WinDirWPFile, WinDirLen);
StrCat(WinDirWPFile, '\');
StrCat(WinDirWPFile, wpFilename);
SetFileAttributes(WinDirWPFile, FILE_ATTRIBUTE_NORMAL); ImageFileType := Uppercase(ExtractFileExt(FileName));
if ImageFileType = '.JPG'
then Jpg2Bmp(FileName, WinDirWPFile) //jpeg
else if ImageFileType = '.BMP'
then copyfile(FileName, WinDirWPFile); //bmp myReg := TRegistry.Create;
myReg.OpenKeyReadOnly('Control Panel\Desktop');
myReg.WriteString('Wallpaper', WinDirWPFile);
myReg.WriteString('TileWallpaper', IntToStr(TileWP - 1));
myReg.Free;
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, WinDirWPFile, SPIF_SENDCHANGE); //chaged WallPaper
StrDispose(WinDirWPFile);
end;
SystemParametersInfo(SPI_SETDESKWALLPAPER,
0,
'c:\yourbmp.bmp',
SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);