Example #1
0
        public static void Apply(uint?monitorIndex, string tempFilePath, DesktopWallpaperPosition style)
        {
            var appDataFolder    = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            var destWallFilePath = Path.Combine(appDataFolder + @"\Microsoft\Windows\Themes", $"WallcatWallpaper{monitorIndex}.tmp");

            if (File.Exists(destWallFilePath))
            {
                File.Delete(destWallFilePath);
            }

            File.Move(tempFilePath, destWallFilePath);

            var dw = (IDesktopWallpaper) new DesktopWallpaperCoclass();

            // Set Wallpaper
            dw.SetWallpaper((monitorIndex != null) ? dw.GetMonitorDevicePathAt(monitorIndex.Value) : null, destWallFilePath);

            // Set Style
            var key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);

            if (style == DesktopWallpaperPosition.Fill)
            {
                key.SetValue(@"WallpaperStyle", 10.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            if (style == DesktopWallpaperPosition.Fit)
            {
                key.SetValue(@"WallpaperStyle", 6.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            if (style == DesktopWallpaperPosition.Span) // Windows 8 or newer only!
            {
                key.SetValue(@"WallpaperStyle", 22.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            if (style == DesktopWallpaperPosition.Stretch)
            {
                key.SetValue(@"WallpaperStyle", 2.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            if (style == DesktopWallpaperPosition.Tile)
            {
                key.SetValue(@"WallpaperStyle", 0.ToString());
                key.SetValue(@"TileWallpaper", 1.ToString());
            }
            if (style == DesktopWallpaperPosition.Center)
            {
                key.SetValue(@"WallpaperStyle", 0.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
        }
Example #2
0
        public static void Apply(string tempFilePath, DesktopWallpaperPosition style)
        {
            var appDataFolder    = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
            var destWallFilePath = Path.Combine(appDataFolder + @"\Microsoft\Windows\Themes", "WallcatWallpaper.tmp");

            if (File.Exists(destWallFilePath))
            {
                File.Delete(destWallFilePath);
            }

            File.Move(tempFilePath, destWallFilePath);

            var key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);

            if (style == DesktopWallpaperPosition.Fill)
            {
                key.SetValue(@"WallpaperStyle", 10.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            if (style == DesktopWallpaperPosition.Fit)
            {
                key.SetValue(@"WallpaperStyle", 6.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            if (style == DesktopWallpaperPosition.Span) // Windows 8 or newer only!
            {
                key.SetValue(@"WallpaperStyle", 22.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            if (style == DesktopWallpaperPosition.Stretch)
            {
                key.SetValue(@"WallpaperStyle", 2.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }
            if (style == DesktopWallpaperPosition.Tile)
            {
                key.SetValue(@"WallpaperStyle", 0.ToString());
                key.SetValue(@"TileWallpaper", 1.ToString());
            }
            if (style == DesktopWallpaperPosition.Center)
            {
                key.SetValue(@"WallpaperStyle", 0.ToString());
                key.SetValue(@"TileWallpaper", 0.ToString());
            }

            SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, destWallFilePath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
        }
        /// <summary>
        /// デスクトップの壁紙を変更
        /// </summary>
        /// <param name="monitorIndex">モニタ番号</param>
        /// <param name="filePath">画像ファイルのパス</param>
        /// <param name="position">壁紙の表示方法</param>
        public void ChangeWallpaper(int monitorIndex, string filePath, DesktopWallpaperPosition position)
        {
            //壁紙を設定するためのオブジェクトを生成
            var wallpaper = (IDesktopWallpaper)(new DesktopWallpaperClass());

            //モニタのデバイスパスを取得
            var id = wallpaper.GetMonitorDevicePathAt((uint)monitorIndex);

            try
            {
                //壁紙を変更
                wallpaper.SetWallpaper(id, filePath);
            }
            catch (Exception)
            {
                //TODO 例外処理
                //ファイルが存在しない場合
                //壁紙の設定に失敗した場合
            }

            //壁紙の表示方法を設定
            wallpaper.SetPosition(position);
        }
        public WallpaperInformation(string wallpaperPath)
        {
            this.Path = wallpaperPath;
            this.Position = DesktopWallpaperPosition.Fill;

        }
 public void SetPosition(DesktopWallpaperPosition position)
 {
 }
Example #6
0
 public WallpaperPositionItem(string name, DesktopWallpaperPosition position)
 {
     this.Name     = name;
     this.Position = position;
 }
Example #7
0
 public WallpaperInformation(string wallpaperPath)
 {
     this.Path     = wallpaperPath;
     this.Position = DesktopWallpaperPosition.Fill;
 }
 public WallpaperPositionItem(string name,DesktopWallpaperPosition position)
 {
     this.Name = name;
     this.Position = position;
 }
        /// <summary>
        /// デスクトップの壁紙を変更
        /// </summary>
        /// <param name="monitorIndex">モニタ番号</param>
        /// <param name="filePath">画像ファイルのパス</param>
        /// <param name="position">壁紙の表示方法</param>
        public void ChangeWallpaper(int monitorIndex, string filePath, DesktopWallpaperPosition position)
        {

            //壁紙を設定するためのオブジェクトを生成
            var wallpaper = (IDesktopWallpaper)(new DesktopWallpaperClass());

            //モニタのデバイスパスを取得
            var id = wallpaper.GetMonitorDevicePathAt((uint)monitorIndex);

            try
            {
                //壁紙を変更
                wallpaper.SetWallpaper(id, filePath);
            }
            catch (Exception)
            {
                //TODO 例外処理
                //ファイルが存在しない場合
                //壁紙の設定に失敗した場合
            }

            //壁紙の表示方法を設定
            wallpaper.SetPosition(position);

        }