  |  /// <summary> /// 通知Windows改变墙纸 /// </summary> /// <param name="strFile">墙纸图片路径</param> procedure TfrmPara.SetRegWallPaper(strFile: string); var   reg : TRegistry; begin   reg := TRegistry.Create;   reg.RootKey := HKEY_CURRENT_USER;   try     if reg.OpenKey('Control Panel\Desktop', False) then     begin       reg.WriteString('TileWallpaper', '0');       reg.WriteString('WallpaperStyle', '2');       reg.WriteString('Wallpaper', strFile);       reg.WriteString('ConvertedWallpaper', strFile);       reg.WriteString('OriginalWallpaper', strFile);       reg.CloseKey;       // 向Windows发送消息, 通知Windows更换墙纸       SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PChar(strFile), SPIF_UPDATEINIFILE or SPIF_SENDWININICHANGE);     end;   finally     reg.Free;   end; end; /// <summary> /// 用指定的方式改变墙纸 /// </summary> /// <param name="strFile">墙纸图片文件</param> /// <param name="style">样式</param> procedure TfrmPara.SetWallPaper(strFile: string; style: Integer); var   dt : IActiveDesktop;   wpo : TWallPaperOpt;   ws : WideString; begin   dt := CreateComObject(CLSID_ActiveDesktop) as IActiveDesktop;   ws := strFile;   case style of     0 : wpo.dwStyle := WPSTYLE_CENTER; //居中     1 : wpo.dwStyle := WPSTYLE_TILE; //平铺     2 : wpo.dwStyle := WPSTYLE_STRETCH; //拉伸     3 : wpo.dwStyle := WPSTYLE_KEEPASPECT; //Win7     4 : wpo.dwStyle := WPSTYLE_CROPTOFIT; //Win7   else     wpo.dwStyle := WPSTYLE_CENTER;   end;   wpo.dwSize := SizeOf(wpo);   dt.SetWallpaperOptions(wpo, 0);   dt.SetWallpaper(PWideChar(ws), 0);   dt.ApplyChanges(AD_APPLY_ALL); end;
 
 
 
  |  |