public static async Task Set(Uri uri, WallpaperDisplayStyle wallpaperDisplayStyle) { using var client = new HttpClient(); var imageStream = await client.GetByteArrayAsync(uri); var imagePath = Path.GetTempFileName(); await File.WriteAllBytesAsync(imagePath, imageStream); var key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true); if (key == null) { throw new InvalidOperationException("The registry key 'Control Panel\\Desktop' could not be found"); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Fill) { key.SetValue(@"WallpaperStyle", 10.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Fit) { key.SetValue(@"WallpaperStyle", 6.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Span) // Windows 8 or newer only! { key.SetValue(@"WallpaperStyle", 22.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Stretch) { key.SetValue(@"WallpaperStyle", 2.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Tile) { key.SetValue(@"WallpaperStyle", 0.ToString()); key.SetValue(@"TileWallpaper", 1.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Center) { key.SetValue(@"WallpaperStyle", 0.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, imagePath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); }
public static void Set(Uri uri, WallpaperDisplayStyle wallpaperDisplayStyle) { try { var s = new WebClient().OpenRead(uri.ToString()); var img = Image.FromStream(s); var tempPath = Path.Combine(Path.GetTempPath(), "wallpaper.bmp"); img.Save(tempPath, ImageFormat.Bmp); var key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true); if (wallpaperDisplayStyle == WallpaperDisplayStyle.Fill) { key.SetValue(@"WallpaperStyle", 10.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Fit) { key.SetValue(@"WallpaperStyle", 6.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Span) // Windows 8 or newer only! { key.SetValue(@"WallpaperStyle", 22.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Stretch) { key.SetValue(@"WallpaperStyle", 2.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Tile) { key.SetValue(@"WallpaperStyle", 0.ToString()); key.SetValue(@"TileWallpaper", 1.ToString()); } if (wallpaperDisplayStyle == WallpaperDisplayStyle.Center) { key.SetValue(@"WallpaperStyle", 0.ToString()); key.SetValue(@"TileWallpaper", 0.ToString()); } SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, tempPath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); } catch { //Supress } }