martedì 16 settembre 2025

C# cambiare lo sfondo del desktop di Windows

In questo esempio nel linguaggio di programmazione C#, vediamo come cambiare lo sfondo del Desktop di Windows.

Per cambiare lo sfondo, utilizzeremo le API di Windows, in un progetto di tipo “Windows Application”.


Aggiungiamo lo spazio dei nomi per la gestione delle API di Windows.


C#

using System.Runtime.InteropServices;


In visualizzazione codice,   scriviamo la dichiarazione per richiamare le funzionalità API per il cambio sfondo a livello globale .

Di seguito si riporta il frammento di codice delle suddette operazioni.


C#

[DllImport("user32.dll", SetLastError = true)]

 private static extern bool SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

 

 private const int SPI_SETDESKWALLPAPER = 20;

 private const int SPIF_UPDATEINIFILE = 0x01;

 private const int SPIF_SENDWININICHANGE = 0x02;



Nell'evento click del pulsante, richiamiamo l’api, passando come parametro il percorso e nome del file di tipo Jpg, per i sistemi operativi Windows 11. Per alcuni sistemi operativi, può è essere necessario il formato BMP.


C#

private void BtnCambiareSfondo_Click(object sender, EventArgs e)

 {

     string PercorsoENomeFile = @"C:\Varie\faro.jpg";

     //Verifica la presenza del file

     if (!File.Exists(PercorsoENomeFile))

     {

         MessageBox.Show("File immagine non trovato: " + PercorsoENomeFile);

         return;

     }

 

 

     // Imposta lo sfondo

     bool result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, PercorsoENomeFile, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);

 

     if (result)

         MessageBox.Show("Sfondo cambiato con successo!");

     else

         MessageBox.Show("Errore nel cambiare lo sfondo.");

 }


Nel caso delle versioni precedenti di Windows 11, o che necessitano di file immagine in formato BMP, utilizzare il seguente esempio.




C#

private void BtnCambiareSfondo_Click(object sender, EventArgs e)

 {

     string PercorsoENomeFile = @"C:\Varie\faro.jpg";

     //Verifica la presenza del file

     if (!File.Exists(PercorsoENomeFile))

     {

         MessageBox.Show("File immagine non trovato: " + PercorsoENomeFile);

         return;

     }

           

     //In alcune versioni di Windows, richiede file .bmp per lo sfondo, si rinomina

           

     string bmpPath = Path.ChangeExtension(PercorsoENomeFile, ".bmp");

 

     // Usa System.Drawing per convertire da jpg/webp a bmp

     using (var image = System.Drawing.Image.FromFile(PercorsoENomeFile))

     {

         image.Save(bmpPath, System.Drawing.Imaging.ImageFormat.Bmp);

     }

 

      

 

     // Imposta lo sfondo

     bool result = SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, bmpPath, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);

 

     if (result)

         MessageBox.Show("Sfondo cambiato con successo!");

     else

         MessageBox.Show("Errore nel cambiare lo sfondo.");

 }



Nessun commento:

Posta un commento