C# 是否使用.NET 4.0更改Windows墙纸?

C# 是否使用.NET 4.0更改Windows墙纸?,c#,.net-4.0,C#,.net 4.0,是否有办法使用.NET 4中的某些新功能更改Windows墙纸?您可以通过更新注册表来设置墙纸。这里有一篇2006年的文章解释了如何做到这一点。更新版本的Windows可能会改变细节,但概念应该是相同的。框架版本应该是无关的 您可以使用设置桌面墙纸。这应该能在应用程序可以运行的所有windows版本上保持一致,但是需要一些互操作 以下互操作声明是您所需要的 public const int SPI_SETDESKWALLPAPER = 20; public const int SPIF_UPDA

是否有办法使用.NET 4中的某些新功能更改Windows墙纸?

您可以通过更新注册表来设置墙纸。这里有一篇2006年的文章解释了如何做到这一点。更新版本的Windows可能会改变细节,但概念应该是相同的。框架版本应该是无关的

您可以使用设置桌面墙纸。这应该能在应用程序可以运行的所有windows版本上保持一致,但是需要一些互操作

以下互操作声明是您所需要的

public const int SPI_SETDESKWALLPAPER = 20;
public const int SPIF_UPDATEINIFILE = 1;
public const int SPIF_SENDCHANGE = 2;

[DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)]
public static extern int SystemParametersInfo(
  int uAction, int uParam, string lpvParam, int fuWinIni);
它可以像这样用来改变桌面壁纸

SystemParametersInfo(
  SPI_SETDESKWALLPAPER, 0, "filename.bmp", 
  SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);

请注意,如果指定的文件不存在,SystemParametersInfo甚至会返回true!(至少在Windows 8上)

另外,您必须提供文件的完整路径,而不仅仅是相对路径

同样在Windows7和更高版本上,这将创建一个新的主题,当然也将关闭图片洗牌