Wie ändere ich mein Windows desktop-wallpaper Programm?

Ich würde wollen, legen Sie ein Hintergrundbild für Windows XP mit C#. Ich habe entwickelt den code so, dass es perfekt funktioniert in Windows 7, aber scheinbar ist es nicht das gleiche für XP. Ich hinzufügen, dass Tapete als eine Ressource, stellen Sie die compile-Aktion als Inhalt, und Immer kopieren. Es kurioserweise setzt die richtigen Tapeten-Namen in der Desktop-Eigenschaften-dialog. Aber die Tapete ist nicht festgelegt. Mein code sieht wie folgt aus:

public sealed class Wallpaper
{
    Wallpaper() { }

    const int SPI_SETDESKWALLPAPER = 20;
    const int SPIF_UPDATEINIFILE = 0x01;
    const int SPIF_SENDWININICHANGE = 0x02;

    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);

    public enum Style : int
    {
        Tiled,
        Centered,
        Stretched
    }

    public static void Set(string wpaper, Style style)
    {
        RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Control Panel\Desktop", true);
        if (style == Style.Stretched)
        {
            key.SetValue(@"WallpaperStyle", 2.ToString());
            key.SetValue(@"TileWallpaper", 0.ToString());
        }

        if (style == Style.Centered)
        {
            key.SetValue(@"WallpaperStyle", 1.ToString());
            key.SetValue(@"TileWallpaper", 0.ToString());
        }

        if (style == Style.Tiled)
        {
            key.SetValue(@"WallpaperStyle", 1.ToString());
            key.SetValue(@"TileWallpaper", 1.ToString());
        }

        string tempPath = "Resources\\"+wpaper;
        SystemParametersInfo(SPI_SETDESKWALLPAPER,
            0,
            tempPath,
            SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
    }
}

Beim Aufruf Wallpaper.Set("wpapername"), es kommt die Tapete von der Projekt-Ressourcen. Es funktioniert auf Win7, aber nicht auf WinXP. Mache ich etwas falsch?

  • Eine ähnliche Frage kann genau das, was Sie brauchen.
  • Ich basiert mein code aus, das ein, aber meine wallpapers bereitgestellt werden müssen, die Anwendung zu verwenden.
  • Es könnte sein, dass XP nicht handhaben der relative Pfad, und geben Sie den vollständigen Pfad für die wallpaper.
  • mögliche Duplikate stackoverflow.com/questions/1061678/...
InformationsquelleAutor Korcholis | 2011-12-07
Schreibe einen Kommentar