C# Wallpaper ändern

X

xxXdEpHiLXxx

Gast
Hallo Leute, :schluck:

Ich bin auf der suche nach einer einfachen Möglichkeit den Windows Hintergrund zu ändern.


Ich bin auf folgenden Code gestoßen.


Code:
public class Wallpaper
        {
            const int SPI_SETDESKWALLPAPER = 20;
            const int SPIF_UPDATEINIFILE = 0x01;
            const int SPIF_SENDWININICHANGE = 0x02;

            public Wallpaper()
            {
            }
            [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 void SetWallpaper(string path, Style style)
            {
                if (System.IO.File.Exists(path))
                {
                    RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);

                    switch (style)
                    {
                        case Style.Stretched:
                            key.SetValue(@"WallpaperStyle", "2");
                            key.SetValue(@"TileWallpaper", "0");
                            break;
                        case Style.Centered:
                            key.SetValue(@"WallpaperStyle", "1");
                            key.SetValue(@"TileWallpaper", "0");
                            break;
                        case Style.Tiled:
                            key.SetValue(@"WallpaperStyle", "1");
                            key.SetValue(@"TileWallpaper", "1");
                            break;
                    }
                    SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path, SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
                }
                else
                {
                    throw new System.IO.FileNotFoundException();
                }
            }
        }

Ändern tut man den Wallpaper dan mit:

Code:
Wallpaper lol = new Wallpaper();
lol.SetWallpaper(@"PfadzuderBitmapDatei", Wallpaper.Style.Centered);

Das klappt auch alles so wie ich es möchte. Da ich aber die Bitmap in das Programm integrieren möchte (als Ressource?) damit es auch auf anderen PC's als Bild genutzt werden kann, möchte ich euch fragen wie ich das realisieren könnte.

Bin für alle ernst gemeinten Antworten Dankbar :)

MfG Phil
 
Also im VisualStudio ist das sehr einfach:

- Rechtsklick im Projektmappenexplorer
- Hinzufügen -> Neues Element
- Ressourcendatei
- Ressourcendatei öffnen
- Irgend ein Bild in die Zwischenablage nehmen
- Strg + V
- fertig ;)

Flup
 
Danke dir :)

Jetzt noch eine kurze Frage:
Wie kann ich dieses Bild nun in meinen Code einfliessen lassen? Wenn ich das Bild rüberziehe wird nur der derzeitige Pfad eingefügt was aber dan auf anderen PC nicht funktioniert.

MfG Phil
 
@xxXdEpHiLXxx: Da du es als Resource dem Projekt hinzufügst ist es Bestandteil des Programms, das du auslieferst (evtl. Build-Einstellungen anpassen).
 
Zurück
Oben