2010-05-22 3 views

Répondre

8

Vous pouvez utiliser SystemParametersInfo pour définir le fond d'écran. Cela devrait fonctionner de manière cohérente sur toutes les versions de Windows sur lesquelles votre application peut s'exécuter, mais cela nécessitera un peu d'interopérabilité.

Les déclarations Interop suivantes sont ce que vous avez besoin

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); 

qui peut être utilisé comme ceci pour changer le fond d'écran

SystemParametersInfo(
    SPI_SETDESKWALLPAPER, 0, "filename.bmp", 
    SPIF_UPDATEINIFILE | SPIF_SENDCHANGE); 
+0

Bonne réponse. Vraiment utile merci! –

1

Vous définissez le fond d'écran en mettant à jour le registre. Voici un article de 2006 expliquant comment le faire. Les détails peuvent avoir changé avec les versions plus récentes de Windows, mais le concept devrait être le même. La version du framework ne devrait pas être pertinente.

http://blogs.msdn.com/coding4fun/archive/2006/10/31/912569.aspx

0

Notez que SystemParametersInfo va même revenir vrai, si le fichier spécifié ne n'existe pas! (sur Windows 8 au moins)

De plus, vous devez indiquer le chemin d'accès complet au fichier, pas seulement un chemin relatif.

Sous Windows 7 et plus, cela créera un nouveau thème et désactivera le réarrangement de l'image bien sûr.