Beispiel #1
0
        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
            }
        }