为什么更新了注册表后,桌面的墙纸不及时刷新?procedure TForm1.Button1Click(Sender: TObject);
var
RegF:TRegistry;
begin
RegF:=TRegistry.create;
try
RegF.RootKey := HKEY_CURRENT_USER;
if RegF.OpenKey('\Control Panel\Desktop',TRUE) then begin
RegF.WriteString('Wallpaper','E:\CJ\壁纸\mura2.jpg');
RegF.CloseKey;
end;
finally
RegF.Free;
end;
SystemParametersinfo(SPI_SETDESKWALLPAPER,0,nil,3);
end;
var
RegF:TRegistry;
begin
RegF:=TRegistry.create;
try
RegF.RootKey := HKEY_CURRENT_USER;
if RegF.OpenKey('\Control Panel\Desktop',TRUE) then begin
RegF.WriteString('Wallpaper','E:\CJ\壁纸\mura2.jpg');
RegF.CloseKey;
end;
finally
RegF.Free;
end;
SystemParametersinfo(SPI_SETDESKWALLPAPER,0,nil,3);
end;
//----------------------------------------------------------[ SetWallpaper ]---
{ 换壁纸核心代码 }
procedure TMainForm.SetWallpaper(FileIndex: Integer);
var
ADeskTop: IActiveDesktop;
tempWideStr: WideString;
wallpaper: PwideChar;
tempImage: TImage;
Error: Boolean;
begin
Error := False;
tempWideStr := FileMemo.Lines.Strings[FileINdex];
tempImage := TImage.Create(nil);
try
tempImage.Picture.LoadFromFile(FileMemo.Lines.Strings[FileINdex]);
except
Error := True;
end;
tempImage.Free;
if Not Error then
begin
ADeskTop := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
wallpaper := PwideChar(tempWideStr);
ADeskTop.SetWallpaper(wallpaper,0);
ADeskTop.ApplyChanges(AD_APPLY_ALL);
end;
end; {SetWallpaper}
ComObj, ShlObj;procedure TForm1.Button3Click(Sender: TObject);
var
ADeskTop:IActiveDesktop;
wallpaper:PwideChar;
begin
ADeskTop:=CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;
wallpaper:='D:\Picture\sc\zerg02.jpg';
ADeskTop.SetWallpaper(wallpaper,0);
ADeskTop.ApplyChanges(AD_APPLY_ALL);
end;