Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Windows Desktop Hintergrund ändern? (https://www.delphipraxis.net/106956-windows-desktop-hintergrund-aendern.html)

Honigdachs 19. Jan 2008 18:27


Windows Desktop Hintergrund ändern?
 
Hallo Gemeinde,

gibt es eine Möglichkeit, mit Delphi den Windows-XP-Desktop-Hintergrund zu ändern?

Also irgendeine Routine, die dann aufgerufen werden kann und dann das ändert?

Vielen Dank!

STS301 19. Jan 2008 18:37

Re: Windows Desktop Hintergrund ändern?
 
hier

Honigdachs 19. Jan 2008 18:46

Re: Windows Desktop Hintergrund ändern?
 
Zitat:

Zitat von STS301

Danke!

Aber wie ich sehe geht das nicht mit Delphi 5... :(

Die Muhkuh 19. Jan 2008 18:47

Re: Windows Desktop Hintergrund ändern?
 
Natürlich geht das mit Delphi5. Musst halt nur RaiseLastWin32Error verwenden, anstatt RaiseLastOSError...

DeddyH 19. Jan 2008 18:48

Re: Windows Desktop Hintergrund ändern?
 
Steht doch da (nee nee, Leute).

bitsetter 19. Jan 2008 18:58

Re: Windows Desktop Hintergrund ändern?
 
Hi,

hier gibt es noch eine andere Variante mit Jpegs oder Gif Bildformaten ab Delphi Version 4.
Nur falls du das mit RaiseLastWin32Error nicht hin bekommst. :stupid:

Honigdachs 19. Jan 2008 19:39

Re: Windows Desktop Hintergrund ändern?
 
Erstmal danke für die Antworten.

Ich habs jetzt nach dem ersten Link versucht - klappt nicht...

Win32-API-Funktion ist fehlgeschlagen. Was hat das zu bedeuten?

DeddyH 19. Jan 2008 19:42

Re: Windows Desktop Hintergrund ändern?
 
Delphi-Quellcode:
procedure SetBackground(const AFilename: String);
begin
 if not SystemParametersInfo(SPI_SETDESKWALLPAPER,
                             0,
                             PChar(AFilename),
                             SPIF_SENDCHANGE OR SPIF_UPDATEINIFILE) then
   RaiseLastWin32Error;
End;
So versucht?

Honigdachs 19. Jan 2008 19:47

Re: Windows Desktop Hintergrund ändern?
 
Delphi-Quellcode:
procedure SetBackground(const Dateiname: String);
begin
  if not SystemParametersInfo(SPI_SETDESKWALLPAPER,
                             0,
                             PChar(Dateiname),
                             SPIF_SENDCHANGE OR SPIF_UPDATEINIFILE) then
   RaiseLastwin32Error;
End;
Im großen und ganzen ja, ich hab nur AFilename durch Dateiname ersetzt.

Der Fehler tritt alle 10sec auf...

Der Dateiname wird mit
Delphi-Quellcode:
SetBackground(Dateiname);
übergeben, und zwar aus einem Button raus.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Dateiname:= edit3.text;
  SetBackground(Dateiname);
end;

DeddyH 19. Jan 2008 19:51

Re: Windows Desktop Hintergrund ändern?
 
Und was steht in dem Edit?

Honigdachs 19. Jan 2008 19:54

Re: Windows Desktop Hintergrund ändern?
 
Zitat:

Zitat von DeddyH
Und was steht in dem Edit?

Der exakte Dateipfad. C:\Bilder\Test\Bild1.jpg

DeddyH 19. Jan 2008 19:57

Re: Windows Desktop Hintergrund ändern?
 
Mom, ich test das mal.

s.h.a.r.k 19. Jan 2008 20:04

Re: Windows Desktop Hintergrund ändern?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Bei mir hat das mit JPEGs irgendwie nie richtig funktioniert. Diese habe ich zurerst in eine BMP umwandeln müssen, da ging es.

Anbei findet ihr mein Konsolen-Programm, welches ich in der Uni nutze, da beim Start des OS nie das alte Wallpaper bleibt!

DeddyH 19. Jan 2008 20:04

Re: Windows Desktop Hintergrund ändern?
 
Mit Bitmaps geht es.

[edit] 2 late :? [/edit]

s.h.a.r.k 19. Jan 2008 20:11

Re: Windows Desktop Hintergrund ändern?
 
Aber bitte frag mich nicht wieso... Vielleicht macht es Vista ja anders. Ich versteh es selber nicht, zumal es JPGs schon ewig gibt. Aber gut, ein normales OS schafft es eben auch mit JPGs...

Honigdachs 19. Jan 2008 20:14

Re: Windows Desktop Hintergrund ändern?
 
Danke an shark für das Programm, werde mir das mal anschauen.

Und dann alles mit bitmaps versuchen.

DeddyH 19. Jan 2008 20:18

Re: Windows Desktop Hintergrund ändern?
 
Naja, in meiner Hilfe steht aber auch eindeutig
Zitat:

Zitat von Win32-SDK
SPI_SETDESKWALLPAPER Sets the desktop wallpaper. The pvParam parameter must point to a null-terminated string containing the name of a bitmap file.


s.h.a.r.k 19. Jan 2008 20:23

Re: Windows Desktop Hintergrund ändern?
 
Ich weiß, dass es eine andere Frage ist, aber weiß irgendwer warum das unbedingt eine Bitmap sein muss und kein anderes Format?! Ich finde die Umwandlung zwar nicht unbedingt so schwer - zumal ich die Funktion, soweit ich noch weiß, auch nur kopiert habe - aber das brauch es doch nicht unbedingt.

DeddyH 19. Jan 2008 20:29

Re: Windows Desktop Hintergrund ändern?
 
Ruf doch mal in Oberschleißheim an ;)

Linux is like a wigwam - no Windows, no Gates, Apache inside

Honigdachs 20. Jan 2008 21:27

Re: Windows Desktop Hintergrund ändern?
 
Also es tut so weder mit bmp noch mit jpg noch mit sonstwas.
ich habs jetzt damit versucht
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if OpenDialog4.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;
Damit klappts auch. Nur wenn ich folgendes versuche geht nichts mehr :( - bzw. es flackert kurz und geht wieder zurück.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
  begin
    if not SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, Pointer(var_edit1), SPIF_SENDWININICHANGE) then //in var_edit1 steht als string die exakte Dateibezeichung
    begin
//      ShowMessage('Konnte folgende Datei nicht als Desktop-Hintergrund setzen: '+OpenDialog1.FileName);
    end;
  end;
end;

bitsetter 20. Jan 2008 22:07

Re: Windows Desktop Hintergrund ändern?
 
Hi,

versuche es mal so:
Delphi-Quellcode:
if not SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, @var_edit1[1], SPIF_SENDWININICHANGE) then

Honigdachs 20. Jan 2008 22:27

Re: Windows Desktop Hintergrund ändern?
 
Zitat:

Zitat von bitsetter
Hi,

versuche es mal so:
Delphi-Quellcode:
if not SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, @var_edit1[1], SPIF_SENDWININICHANGE) then

Dann bräuchte ich aber ein Array oder?
Jedenfalls meckert er und möchte einen Array-Typ angegeben haben.

bitsetter 20. Jan 2008 23:36

Re: Windows Desktop Hintergrund ändern?
 
Ich dachte var_edit1 ist bei dir ein Ansistring
Delphi-Quellcode:
var
  var_edit1: AnsiString;
Mit deinem Code müsste es eigentlich auch gehen, steht in var_edit1 überhaupt ein gültiger Dateipfad drin?

Honigdachs 22. Jan 2008 12:19

Re: Windows Desktop Hintergrund ändern?
 
Zitat:

Zitat von bitsetter
Ich dachte var_edit1 ist bei dir ein Ansistring
Delphi-Quellcode:
var
  var_edit1: AnsiString;
Mit deinem Code müsste es eigentlich auch gehen, steht in var_edit1 überhaupt ein gültiger Dateipfad drin?

Nein, es ist ein ganz normaler String gewesen. Werde es mal mit ansistring versuchen.
Und in var_edit1 steht ein korrekter Pfad drin, der mittels OpenDialog festgelegt wurde.

Außerdem wird für ca. 1 sec der HG ja auch gewechselt...nur springt dann wieder um.

Ich kann gerne bei Bedarf mal den kompletten QT posten.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:55 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz