Private Const SPI_SETDESKWALLPAPER As Integer = &H14 Private Const SPIF_UPDATEINIFILE As Integer = &H1 Private Const SPIF_SENDWININICHANGE As Integer = &H2
Private Declare Auto Function SystemParametersInfo Lib "user32.dll" ( _ ByVal uAction As Integer, ByVal uParam As Integer, _ ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
' change this to whatever filename you want to use Const WallpaperFile As String = "MovieCollectionImage.bmp"
''' <SUMMARY> ''' Sets the background of your Windows desktop. ''' The image will be saved in MyPictures and the background ''' wallpaper updated. ''' </SUMMARY> ''' The image to be set as the background. ''' <REMARKS></REMARKS> Friend Sub SetWallpaper(ByVal img As Image) Dim imageLocation As String imageLocation = My.Computer.FileSystem.CombinePath( _ My.Computer.FileSystem.SpecialDirectories.MyPictures, WallpaperFile) Try img.Save(imageLocation, System.Drawing.Imaging.ImageFormat.Bmp) SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, imageLocation, _ SPIF_UPDATEINIFILE Or SPIF_SENDWININICHANGE) Catch Ex As Exception MsgBox("There was an error setting the wallpaper: " & Ex.Message) End Try End Sub
Now, use the following code to set the wallpaper to the desired image. This example shows how to set the wallpaper to an image contained in a Windows Forms picture box: SetWallpaper (Me.PictureBox1.Image)
And here's the code in C# as well (requires Visual C# 2005 to work): private const int SPI_SETDESKWALLPAPER = 0X14;
private const int SPIF_UPDATEINIFILE = 0X1;
private const int SPIF_SENDWININICHANGE = 0X2;
[DllImport("USER32.DLL",EntryPoint="SystemParametersInfo", SetLastError = true)]
private static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
// change this to whatever filename you want to use
private const string WallpaperFile = "MovieCollectionImage.bmp";
// <SUMMARY>
// Sets the background of your Windows desktop.
// The image will be saved in MyPictures and the background
// wallpaper updated.
// </SUMMARY>
// The image to be set as the background. />
// <REMARKS></REMARKS>
internal void SetWallpaper(Image img)
{
string imageLocation;
imageLocation = System.IO.Path.GetFullPath(System.Environment.SpecialFolder.MyPictures.ToString() + WallpaperFile);
try
{
img.Save(imageLocation, System.Drawing.Imaging.ImageFormat.Bmp);
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, imageLocation, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
}
catch (Exception Ex)
{
MessageBox.Show("There was an error setting the wallpaper: " + Ex.Message);
}
}
|