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.");
}
Le opere pubblicate in questo blog sono sotto la licenza Creative Commons. Attribuzione- No commerciale e no derivate.
Nessun commento:
Posta un commento