Wie ändere ich mein Windows-Desktop-Hintergrundprogramm programmatisch?

8

Ich möchte ein Hintergrundbild für Windows XP mit C # festlegen. Ich habe den Code so entwickelt, dass er perfekt in Windows 7 funktioniert, aber anscheinend ist es für XP nicht dasselbe. Ich füge dieses Hintergrundbild als Ressource hinzu, setze seine Kompilierungsaktion als Inhalt und Immer kopieren. Es stellt merkwürdigerweise den richtigen Hintergrundnamen im Dialogfeld Eigenschaften des Desktops ein. Das Hintergrundbild ist jedoch nicht festgelegt. Mein Code sieht so aus:

%Vor%

Beim Aufrufen von Wallpaper.Set ("wpapername") wird der Hintergrund aus Projektressourcen abgerufen. Es funktioniert auf Win7, aber nicht auf WinXP. Mache ich etwas falsch?

    
Korcholis 07.12.2011, 11:34
quelle

2 Antworten

12

Nun, das ist ein bisschen peinlich, aber ich beantworte meine eigene Frage mit dem, was ich gefunden habe.

Ich musste mehr Code aus der akzeptierten Antwort hier wiederverwenden . Grundsätzlich bestand das Problem in XP darin, dass es eine bmp-Datei verwenden musste, so dass es mir gelang, eine Projektressource in eine bmp-Datei zu konvertieren, indem ich das vorherige Beispiel und ein paar Feinabstimmungen verwendete. Die Methode Set funktioniert folgendermaßen:

%Vor%

Der wichtige Teil befindet sich in der dritten Zeile dieses Codes ( System.Drawing.Image.FromFile(Path.GetFullPath(wpaper)); ).

    
Korcholis 12.12.2011, 09:42
quelle
6

Für eine gute und zuverlässige Lösung.

Fügen Sie die foillowing Klasse Ihrem Projekt hinzu

%Vor%

Hinweis: Ersetzen Sie XXXNAMESPACEXXX durch den Standardnamespace Ihres Projekts.

Dann kann es wie folgt verwendet werden:

%Vor%

Es kann auch so verwendet werden:

%Vor%

Dies ist unter Windows XP, 7, 8, 8.1 und Windows 10 verifiziert.

Hinweis Es ist zu beachten, dass diese Methode alle Desktop-Hintergrundsicherheitsbeschränkungen umgehen wird, die vom Netzwerkadministrator angewendet werden.

    
Knickerless-Noggins 22.03.2016 10:02
quelle