如何以编程方式设置
Windows 7 Wallpaper幻灯片?
设置普通壁纸
[DllImport("user32.dll",CharSet = CharSet.Auto)] private static extern Int32 SystemParametersInfo(UInt32 uiAction,UInt32 uiParam,String pvParam,UInt32 fWinIni); private static UInt32 SPI_SETDESKWALLPAPER = 20; private static UInt32 SPIF_UPDATEINIFILE = 0x1; public void Setimage(string filename) { SystemParametersInfo(SPI_SETDESKWALLPAPER,filename,SPIF_UPDATEINIFILE); }
我到现在才发现:
C:\Users\CurrentUser\AppData\Roaming\Microsoft\Windows\Themes\
C:\Users\CurrentUser\AppData\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper.jpg
(during a slideshow the file is changing automatically)
解决方法
试试这个
public sealed class Wallpaper { Wallpaper() { } const int SPI_SETDESKWALLPAPER = 20; const int SPIF_UPDATEINIFILE = 0x01; const int SPIF_SENDWININICHANGE = 0x02; [DllImport("user32.dll",CharSet = CharSet.Auto)] static extern int SystemParametersInfo(int uAction,int uParam,string lpvParam,int fuWinIni); public enum Style : int { Tiled,Centered,stretched } public static void Set(Uri uri,Style style) { System.IO.Stream s = new System.Net.WebClient().OpenRead(uri.ToString()); System.Drawing.Image img = System.Drawing.Image.FromStream(s); string tempPath = Path.Combine(Path.GetTempPath(),"wallpaper.bmp"); img.Save(tempPath,System.Drawing.Imaging.ImageFormat.Bmp); RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop",true); if (style == Style.stretched) { key.SetValue(@"WallpaperStyle",2.ToString()); key.SetValue(@"TileWallpaper",0.ToString()); } if (style == Style.Centered) { key.SetValue(@"WallpaperStyle",1.ToString()); key.SetValue(@"TileWallpaper",0.ToString()); } if (style == Style.Tiled) { key.SetValue(@"WallpaperStyle",1.ToString()); } SystemParametersInfo(SPI_SETDESKWALLPAPER,tempPath,SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE); } }
最初的问题是this
原文地址:https://www.jb51.cc/csharp/98936.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。