Sandro Bizioli


Chi sogna di giorno conosce molte cose che sfuggono a chi sogna soltanto di notte. (E.A.Poe)
Mappa

Cambiare lo sfondo del Desktop in VB.Net

Ecco una semplice funzione che ci permette di sostituire lo sfondo del Desktop di Windows.
Oltre alla possibilità di scegliere il consueto tipo di allineamento (centrato, affiancato, o esteso), la funzione permette anche di impostare una nuova immagine mantenendo le impostazioni di visualizzazione attualmente in uso nel sistema.

Ecco il codice della routine:
'
' Utilizzata per modificare il wallpaper di Windows
'
Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Integer, ByVal uParam As Integer, ByVal lpvParam As String, ByVal fuWinIni As Integer) As Integer
Const SPI_SETDESKWALLPAPER = 20
Const SPIF_UPDATEINIFILE = &H1
'
' Enumeratore delle impostazioni
'
Private Enum DesktopStile As Integer
  Replace = 0
  Tiled = 1
  Centred = 2
  Streched = 4
  None = 5
End Enum

Private Sub WallpaperChange(Optional ByRef myImage As Image = Nothing, Optional ByVal fileName As String = "", Optional ByVal Stile As DesktopStile = DesktopStile.Replace)
'***********************************************************************************
'Func.: WallpaperChange (Mod SB-04/02/2008; Mod.: )
'Desc.: Modifica lo sfondo del desktop di Windows
'
'Par. : [myImage] Oggetto System.Drawing.Image rappresentante la nuova immagine da impostare come sfondo
' [FileName] Stringa indicante il nome del file completo di percorso dell'immagine da impostare come sfondo '
' [Stile] Integer indicante il tipo di operazione da compiere. I valori sono associati all'enum DesktopStile
'NB. : Se FileName è lasciato a blank o indica un percorso reale di un file , lo sfondo del desktop verrà rimosso.
'***********************************************************************************
Dim key As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser.OpenSubKey("Control Panel\Desktop", True)
Dim WallpaperStyle As Object = Nothing
Dim TileWallpaper As Object = Nothing
'
'
' Se ho passato solo l'immagine prima la salvo e poi punto al nuovo file
'
If fileName = "" And myImage IsNot Nothing Then
  '
  ' Salvo l'immagine nella directory di windows
  '
  fileName = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.CurrentUserApplicationData, "Temp.bmp")
  myImage.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp)
End If
'
' Se ho scelto l'opzione di sostituzione dello stile corrente, prima lo leggo e poi lo applico
'
If Stile = DesktopStile.Replace Then 
  WallpaperStyle = key.GetValue("WallpaperStyle")
  TileWallpaper = key.GetValue(
"TileWallpaper")
End If
'
' Se ho scelto uno stile specifico lo applico
'
Select Case Stile
  Case DesktopStile.Centred
    WallpaperStyle =
"1"
    TileWallpaper = "0"
  Case DesktopStile.Streched
    WallpaperStyle =
"2"
    TileWallpaper = "0"
  Case DesktopStile.Tiled
    WallpaperStyle =
"1"
    TileWallpaper = "1"
  Case DesktopStile.None
    fileName =
""
End Select
'
' Cambio lo sfondo del desktop
'
key.SetValue("WallpaperStyle", WallpaperStyle)
key.SetValue(
"TileWallpaper", TileWallpaper)
key.Close()
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, fileName, SPIF_UPDATEINIFILE)
 
End Sub

Categoria: VB.Net
lunedì, 04 feb 2008 Ore. 15.12
Statistiche
  • Views Home Page: 111.524
  • Views Posts: 568.190
  • Views Gallerie: 117.370
  • n° Posts: 227
  • n° Commenti: 222
Copyright © 2002-2007 - Blogs 2.0
dotNetHell.it | Home Page Blogs
ASP.NET 2.0 Windows 2003