Laden...

Desktophintergrund programmgesteuert in UWP ändern

Erstellt von Blubbaxx vor 7 Jahren Letzter Beitrag vor 7 Jahren 1.673 Views
B
Blubbaxx Themenstarter:in
4 Beiträge seit 2016
vor 7 Jahren
Desktophintergrund programmgesteuert in UWP ändern

Guten Tag liebe Leute,

nachdem mit dieses Forum hier schon oft weitergeholfen hat, habe ich nun selbst auch mal eine Frage auf die ich keine Antwort finde.

Ich habe mit folgendem Code erfolgreich meinen (Desktop-)Hintergrund ändern können. (WPF-Anwendung)


public MainPage()
        {
            this.InitializeComponent();
        }

        [DllImport("user32.dll")]
        private static extern Int32 SystemParametersInfo(UInt32 uiAction, UInt32 uiParam, String pvParam, UInt32 fWinIni);

        private static UInt32 SPI_SETDESKWALLPAPER = 20;
        private static UInt32 SPIF_UPDATEINIFILE = 0x1;

        private void button_Click(object sender, RoutedEventArgs e)
        {
            string Filename = "C:\\1.bmp";
            SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Filename, SPIF_UPDATEINIFILE);
        }

Nun habe ich das Ganze in einer UWP App versucht, ohne Erfolg. Es wird keine Fehlermeldung angezeigt. Bei "buttonklick" passiert einfach garnichts.

Kann mir einer hier eine kleine Hilfestellung geben?

Grüße
Blubbaxx

16.842 Beiträge seit 2008
vor 7 Jahren

UWPs haben ein anderes Rechtemodell (laufen auch in einem anderen Security Context) und i.d.R. kein direkten Zugriff auf Win32 APIs. Das ist ja auch einer der Grundgedanken von UWP: sie sind isoliert!
Du kannst nicht 1:1 zugreifen wie in Desktop-Applikationen, sondern nur die APIs verwenden, die auch UWP kennt.

UWPs kennen auch nur die APIs (Subset), die auf allen Device-Plattformen (XBox, Desktop, Mobile, HoloLens) existieren.
Willst Du spezifische Funktionen einer Plattform verwenden (wie eben Win32), dann geht das mit UWP nicht; dafür ist UWP aber auch nicht gedacht.

In UWP gibt es die UserProfilePersonalizationSettings, um Benutzerprofilinformationen zu ändern.
Vielleicht hast Du Glück und es funktioniert damit; aber direkt auf Win32 ist von UWP aus nicht.

Es gibt aber dlls-Funktionalitäten, die via pinvoke auch von UWP aus nutzbar sind.
Die DLLs heissen hier aber anders, zB statt kernel.dll dann api-ms-win-core-sysinfo-l1-2-0.dll

B
Blubbaxx Themenstarter:in
4 Beiträge seit 2016
vor 7 Jahren

Vielen Dank für deine Antwort. Habe in der msdn mal nach dem Begriff

UserProfilePersonalizationSettings

gesucht und das sieht recht vielversprechend aus. Danke für diesen Tipp! Werde ich heute Abend direkt mal ausprobieren.

Ich muss sagen ich tu mir mit UWP Apps als Anfänger ziemlich schwer, da ich viele der Funktionen die ich in einer normalen Desktop App problemlos nutzen kann nicht zur Verfügung habe. Leider kenne ich auch oftmals keine alternativen.