首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >幻灯片壁纸Windows 7

幻灯片壁纸Windows 7
EN

Stack Overflow用户
提问于 2012-07-04 21:05:13
回答 1查看 2K关注 0票数 8

如何以编程方式设置Windows 7壁纸幻灯片?

设置普通壁纸

代码语言:javascript
运行
复制
    [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, 0, filename, SPIF_UPDATEINIFILE);
        }

到现在为止我发现了什么:

中的幻灯片有一个ini文件。

C:\Users\CurrentUser\AppData\Roaming\Microsoft\Windows\Themes\

在幻灯片放映期间,壁纸必须位于以下文件夹中:

C:\Users\CurrentUser\AppData\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper.jpg (在幻灯片显示文件自动更改期间)

EN

回答 1

Stack Overflow用户

发布于 2012-07-05 09:30:37

尝尝这个

代码语言:javascript
运行
复制
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());
        key.SetValue(@"TileWallpaper", 1.ToString());
    }

    SystemParametersInfo(SPI_SETDESKWALLPAPER,
        0,
        tempPath,
        SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}
 }

最初的问题是this

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11335451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档