Существует ли способ изменить обои Windows, использующие некоторую новую функцию в.NET 4?
Вы можете использовать SystemParametersInfo для установки обоев рабочего стола. Это должно работать согласованно во всех версиях окон, в которых может работать ваше приложение, однако потребует некоторого взаимодействия.
Следующие объявления взаимодействия - это то, что вам нужно.
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