Hmm..
Ich habe mir mal erlaubt, deine Routine zu korrigieren:
Delphi-Quellcode:
function GetWallpaperCache:WideString;
const
CDataValue: string = 'TranscodedImageCache';
CKeyName: string = 'Control Panel\Desktop\';
var
regist: TRegistry;
KeyExists: boolean;
vSize : integer;
arr: array of WideChar;
begin
Result := '';
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(arr, vSize div 2);
regist.ReadBinaryData(CDataValue, arr[0], vSize);
Result := PWideChar(@Arr[12]);
end;
end;
except
regist.CloseKey;
end
finally
regist.Free;
end;
end;
Die ReadBinaryData enthalten offensichtlich ab dem Byte 24 einen WideString.
Dann sollte man diesen auch als dass verwenden, damit wir auch
Unicode-Dateinamen erhalten
Hierbei scheint es sich eventuell um eine Bilderserie handeln zu können, da es noch den Registry-Eintrag 'TranscodedImageCount' gibt.
Konnte es jedoch noch nicht testen.
Ist wohl dann für SlideShows...