Entwickler-Ecke

Windows API - Hintergrundbild zur Laufzeit ändern


patmann2001 - Mo 02.09.02 13:04
Titel: Hintergrundbild zur Laufzeit ändern
Hallo
Ich möchte gerne das Hintergrundbild zur Laufzeit mit einem Programm ändern.
Wie geht das?

cu Patmann


Tino - Mo 02.09.02 14:04

Welches Hintergrundbild? Das auf dem Desktop oder irgendein Bild in Deiner Anwendung oder ... ?


DeCodeGuru - Mo 02.09.02 14:16

Hi,

ich gehe mal davon aus, dass er den Desktophintergrund wechseln will. Wenn ja, dann kannste folgenden Code verwenden.


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  begin
    if not SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(OpenDialog1.FileName), SPIF_SENDWININICHANGE) then
    begin
      ShowMessage('Konnte folgende Datei nicht als Desktop-Hintergrund setzen: '+OpenDialog1.FileName);
    end;
  end;
end;


patmann2001 - Mo 02.09.02 16:27

Yo, danke
Das war's

cu Patmann :lol:


DeCodeGuru - Mo 02.09.02 16:30

des is gut :mrgreen:


patmann2001 - Di 03.09.02 15:34

Etwas geht leider doch nicht. :(
Ich habe Win2000.
Mit dem Befehl:

Quelltext
1:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(dateiname), SPIF_UPDATEINIFILE)                    

ändert Windows wenigstens das Hintergrundbild bei jedem einloggen, doch leider nicht zur Laufzeit.
Nehme ich:

Quelltext
1:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(dateiname), SPIF_SENDCHANGE)                    

oder

Quelltext
1:
SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(dateiname), SPIF_SENDWININICHANGE)                    

dann passiert gar nichts.
Kann ich irgendwie den Bildschirm repainten oder muss ich irgendetwas anderes tun?

cu Patmann


DeCodeGuru - Di 03.09.02 15:42

was? er ändert nur das Hintergrundbild bei jedem einloggen? Also bei mir macht er das einwandfrei und ich habe auch windows 2000. Haste Admin-Rechte? Service-Pack? Oder was anderes?


patmann2001 - Di 03.09.02 15:43

Ich bin Admin
Alle Service Packs sind installiert.
K.A. Warum nicht
cu Patmann
P.S. Es kommen auch keine Fehlermeldungen.


DeCodeGuru - Di 03.09.02 17:15

also, ich habe jetzt genau den sourcecode, den ich gepostet habe nochmal ausprobiert und es funtzt einwandfrei. Achja, man darf natürlich keine Jpegs auswählen sondern nur *.bmp-s. Sollte man vielleicht erwähnen, wenn du die Meldung aus dem code gekickt hast. aber so funtzt das einwandfrei. Achja, ich senden SPIF_SENDWININICHANGE.


patmann2001 - Mi 04.09.02 12:38

Also Egal was ich probiere:
Es klappt nicht.
cu Patmann


patmann2001 - Mi 04.09.02 14:30

ICH HABS :twisted:
Man muss AKTIVE DESKTOP deaktivieren. Dann geht es :mrgreen:
Danke

cu Patmann


DeCodeGuru - Mi 04.09.02 15:12

escht? Gut, der ist bei mir sowieso immer deaktiviert. mag den nicht. :mrgreen: