Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Hintergrundbild ermitteln (https://www.delphipraxis.net/15735-hintergrundbild-ermitteln.html)

p3ps1 3. Feb 2004 14:51


Hintergrundbild ermitteln
 
Es wird ganz oft beschrieben wie ich das Hintergrundbild meines Desktops ändere.
Aber wie ermittle ich das aktuelle Bild? Das müsste ich ja irgendwie aus der Registry auslesen können. Weiss da wer eine Funktion für? Also z.B.

Delphi-Quellcode:
 bild:TPicture
         ...
        bild:=getaktuellesbild;
[edit=Luckie]Delphi-Tags korrigiert. Mfg, Luckie[/edit]

Luckie 3. Feb 2004 14:53

Re: Hintergrundbild ermitteln
 
Such dir den Wert in der Registry und dann kuckt dir mal Tregistry in der Hilfe an. ;)

p3ps1 3. Feb 2004 15:18

Re: Hintergrundbild ermitteln
 
Ich hab ja schon versucht das in der Registry zu finden.
So weit ich weiss ist das ja unter HKEY_CURRENT_USER/Control_Panel/Desktop
aber da hab ich mehrere gefunden. Irgendwie nur nicht das Rcihtige :gruebel:

MathiasSimmack 3. Feb 2004 16:37

Re: Hintergrundbild ermitteln
 
Zitat:

Zitat von p3ps1
So weit ich weiss ist das ja unter HKEY_CURRENT_USER/Control_Panel/Desktop
aber da hab ich mehrere gefunden. Irgendwie nur nicht das Rcihtige :gruebel:

Richtig. Bei mir gibt´s da einen Eintrag, der auch "WallPaper" heißt.

p3ps1 5. Feb 2004 21:01

Re: Hintergrundbild ermitteln
 
ich blick bei der registry irgendwie überhaupt nicht durch
mit welchem befehl komm ich denn jetzt zum beispiel an das hintegrundbild?
HKEY_CURRENT_USER/Control_Panel/Desktop/wallpaper

Luckie 5. Feb 2004 21:08

Re: Hintergrundbild ermitteln
 
Kuck dir aml in der Hilfe TRegistry an und ganz besonders die Methode TRegistry.ReadString.

Helpliner 5. Feb 2004 21:16

Re: Hintergrundbild ermitteln
 
Also ich würde das folgendermaßen machen (angelehnt an das Registry Tutorial auf Delphi-Sorce.de.


Delphi-Quellcode:
uses Registry;

procedure TForm1.FormCreate(Sender: TObject);
var regist: TRegistry;
begin
  regist:=TRegistry.Create;
  regist.RootKey:=HKEY_CURRENT_USER;
  try
    regist.OpenKey('Control Panel\Desktop\', false);
    Edit1.Text := regist.ReadString('Wallpaper');
  except
    Edit1.Text := ('Fehler beim lesen');
  end;
  regist.free;
end;
Das Problem bei der Sache ist das als Wert immer (ausser wenn du kein Hintergrundbild definiert hast) der Wert:

C:\Dokumente und Einstellungen\<Benutzername>\Lokale Einstellungen\Anwendungsdaten\Microsoft\Wallpaper1 .bmp

herauskommen wird, da sich Windows das Hintergrundbild das du auswählst immer dorthin kopiert.

p3ps1 5. Feb 2004 21:18

Re: Hintergrundbild ermitteln
 
Das war genau das was ich gesucht habe!
Vielen Dank :)

Luckie 5. Feb 2004 21:32

Re: Hintergrundbild ermitteln
 
Besser ist aber das:
Delphi-Quellcode:
uses
  Registry;

function GetWallpaper: String;
var
  s: String;
  regist: TRegistry;
begin
  s := '';
  // wir wollen nur lesen
  regist:=TRegistry.Create(KEY_READ);
  try
    regist.RootKey:=HKEY_CURRENT_USER;
    // nur weitermachen, wenn Schlüssel geöffnet werden konnte
    // except hier unnötig
    if regist.OpenKey('Control Panel\Desktop\', false) then
      s := regist.ReadString('WallPaper');
  finally // regist Objekt auf alle Fälle wieder freigeben
    FreeAndNil(regist);
  end;
  result := s;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption := GetWallpaper();
end;
Das except ist unnötig, OpenKey liefert True zurück, wenn es geklappt hat. Und in Helpliners Code wird bei einem Fehler das TRegistry Objekt nicht wieder freigegeben.

fkerber 5. Feb 2004 21:32

Re: Hintergrundbild ermitteln
 
HI!

Das mit dem Pfad kann ich leider nicht bestätigen. Ich habe z.B. momentan das Hintergrundbild "Grüne Idylle". Das Bild Wallpaper1.bmp ist aber ein ganz anderes.

Ciao fkerber


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:38 Uhr.
Seite 1 von 2  1 2      

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