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()); } }
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) { }
public WallpaperPositionItem(string name, DesktopWallpaperPosition position) { this.Name = name; this.Position = position; }
public WallpaperPositionItem(string name,DesktopWallpaperPosition position) { this.Name = name; this.Position = position; }