使用.NET 4.0更改Windows Wallpaper?

有没有办法使用.NET 4中的一些新function更改Windows壁纸?

您可以使用SystemParametersInfo来设置桌面墙纸。 这应该在您的应用程序可以运行的所有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); 

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

http://blogs.msdn.com/coding4fun/archive/2006/10/31/912569.aspx

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

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

此外,在Windows 7及更高版本上,这将创建一个新的主题,当然会关闭图片洗牌。