Wallpaper setzen (SystemParametersInfo)



  • Hi Zusammen,

    bin in einem anderen Forum über einen Thread gestoßen, indem ein Delphi-Programmierer ein Bild als Desktophintergrund setzen will. Das Programm ist in Delphi geschrieben, ihr solltet aber keine Probleme haben es zu parsen - ich hab schließlich die 4 Zeilen auch verstanden.
    Ich bin insofern auf das 'problem' aufmerksam geworden, da er sagt, dass das Programm nur in seiner Entwicklungsumgebung einwandfrei ausgeführt wird.
    Ansonsten bewirkt es keine Änderung des Hintergrundes:

    program Haunted;
    
    uses
      Windows;
    
    const
      WallPaper = 'C:\WINDOWS\Setup.bmp';
    
    begin
      SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, WallPaper,
        SPIF_UPDATEINIFILE + SPIF_SENDWININICHANGE);
    end.
    

    Irgendwelche Ideen ? Mich würde nämlich auch mal interessieren, warum der Code nur innerhalb der IDE funktioniert. An der Pfadangabe des Bildes liegt es nämlich nicht...

    Achja: Angeblich gibt SystemParametersInfo FALSE zurück. Sry dass ich hier so überstürzt poste - es wäre wohl vernünftiger einfach den Error-Code mit GetLastError() zu checken.
    Aber ich würde ihm gerne Hilfestellung geben, ohne Error-Code.
    Wenn's keiner weiß, dann isses also auch nicht so wichtig... vielleicht hat ja jemand anders sowas schon mal erlebt.

    Grüße
    Xzibit



  • hum, ich hab mal mithilfe dieses forums ( damals haben mir so nette leute hier gesagt das es die funktion gibt 🙂 ) ein programm geschrieben das den hintergrund ändert. ( für die schul pcs. da wars gespeert 😉 ) ich habs so gemacht...:

    #include <windows.h>
    ....
    
    ChangeBackground( flb_Files->FileName.c_str() );
    
    ....
    
    void ChangeBackground( const char * const Background )
    {
    SystemParametersInfo(SPI_SETDESKWALLPAPER,0,(PVOID)Background,0);
    }
    void SetDefaultBackground ()
    {
    SystemParametersInfo(SPI_SETDESKWALLPAPER,0,SETWALLPAPER_DEFAULT,0);
    }
    
    ...
    

    vieleicht hilft es dir ja.



  • Und es liegt doch am Dateinamen - die Backslashes sind Escape-Zeichen (auch bei (Object) Pascal - nicht nur bei C oder C++), d.h. sie müssen gedoppelt werden:

    const
      WallPaper = 'C:\\WINDOWS\\Setup.bmp';
    

Anmelden zum Antworten