Betriebssystem: Win 8,Win 8.1,Win 10
Wallpaper und Windows 8+
Hallo Gemeinde,
in einem mini-Projekt versuche ich zu ermitteln wie der aktuell benutzte Dateiname zum Desktop Hintergrund-Bild lautet. Also Ergebnis sollte ein vollständiger Pfad + Dateiname sein. Was ich hier in DP gefunden war ist folgender Beitrag von turboPASCAL:
Delphi-Quellcode:
Das funktioniert mit meinem eigenen Windows 10 (noch ist alles so wie nach OS-Installation) wunderbar.
function GetWallpaperBitmap: String;
const SPI_GETDESKWALLPAPER = $0073; var wpFName: array [0..MAX_PATH] of Char; begin if SystemParametersInfo(SPI_GETDESKWALLPAPER, MAX_PATH, @wpFName, 0) then Result := String(wpFName) else Result := ''; end; Ich fand eine Seite die einen völlig anderen Weg beschreitet und da frage ich mich ob die oben genannte Methode noch aktuell ist. PowerShell Scripte wie man es heute wohl machen sollte. Von daher meine Frage an alle die Windows 8 oder höher nutzen und eigene Hintergrundbilder verwenden, erhaltet ihr mit obiger Funktion tatsächlich den Dateinamen oder klappt da was nicht? Grüße |
AW: Wallpaper und Windows 8+
Klappt. Windows 10 1803.
|
AW: Wallpaper und Windows 8+
Klappt. Win8.1 und Win10 1809 (Build 17763.55).
|
AW: Wallpaper und Windows 8+
Dankeschön fürs testen! :thumb:
|
AW: Wallpaper und Windows 8+
Hmm..
auch unter W7 ;) Sollte auch, da MS hier https://docs.microsoft.com/en-us/win...arametersinfoa auch dies beschreibt! Würde es hierfür eine neue API geben, dann würde es ja hier beschrieben sein ;) |
AW: Wallpaper und Windows 8+
Zitat:
Es funktioniert halt - Bis MS meint den Speicherkey zu ändern. Dein Weg ist schon der Offizielle. Evtl. gibt es einen neueren COM/WinRT-Weg |
AW: Wallpaper und Windows 8+
Zitat:
Gruß K-H |
AW: Wallpaper und Windows 8+
ich holte mir damals immer über
Delphi-Quellcode:
den namen.
HKEY_CURRENT_USER\Control Panel\Desktop\Wallpaper
für mein eigenes windows 10 passt das immer noch. nun bekam ich ne nachricht das dort was mit "Transcoded" nur noch dargestellt wird, also habe ich mich ein wenig schlau gemacht was damit gemeint sei. mein versuch diesen
Delphi-Quellcode:
eintrag auszuwerten, da klappt was mit meiner umsetzung noch nicht so ganz bzw bezweifle ich meinen eigenen code.
HKEY_CURRENT_USER\Control Panel\Desktop\TranscodedImageCache
Delphi-Quellcode:
Da der Beitrag von turboPASCAL doch schon ein paar tage alt ist, wollte ich sichergehen, ist ja auch getan, Danke!
procedure TForm1.Button1Click(Sender: TObject);
const CDataValue: string = 'TranscodedImageCache'; CKeyName: string = 'Control Panel\Desktop\'; var regist: TRegistry; KeyExists: boolean; vSize, p: integer; tmpStr, tmp: string; begin regist := TRegistry.Create; try regist.RootKey := HKEY_CURRENT_USER; try KeyExists := regist.OpenKey(CKeyName, false); if (KeyExists) then begin vSize := regist.GetDataSize(CDataValue); if (vSize > 0) then begin SetLength(tmpStr, vSize); regist.ReadBinaryData(CDataValue, tmpstr[1], vSize); tmpStr := Copy(tmpStr, 13, vSize); Edit1.Text := tmpStr; end; end; except regist.CloseKey; end finally regist.Free; end; end; Danke auch an die weiteren Hinweise, siehste, ich hatte das bei msdn nicht gefunden oder nicht angestrengt genug gesucht :) |
AW: Wallpaper und Windows 8+
mist, so ganz scheint das mit der microsoft api nicht zu stimmen.
auf dem fremdrechner bekomme ich per api als result ein verzeichnis
Delphi-Quellcode:
mein binär versuch schlägt da zwar fehl aber der pfad+name sei wohl enthalten inklusive vieler unicode zeichen.
\AppData\Roaming\Microsoft\Windows\Themes\TranscodedWallpaper
also ist die zweite variante doch eher die korrekte methode, ich muss nur noch heraus finden wie der eintrag korrekt in text umgewandelt wird. |
AW: Wallpaper und Windows 8+
Warum genau sucht du nach einer alternativen Möglichkeit oder warum verwendest du nicht deine Funktion?
Delphi-Quellcode:
function GetWallpaperBitmap: String;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:12 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