Registriert seit: 30. Okt 2004
475 Beiträge
Delphi 12 Athens
|
AW: Pfad mit GUID (KnownFolderId) umwandeln in vollen Pfad
23. Apr 2016, 19:45
Danke für die Zusatzinfos!
Ich habe mir das jetzt mal so zusammengebastelt, dass ich eine universelle Funktion habe, um Pfade vollständig umzuwandeln.
Falls es noch jemand brauchen kann:
Delphi-Quellcode:
function ExpandPath( const sPath: String): String;
var
chrBuffer: LPWSTR;
chrOut: array[0..1023] of Char;
sGUID, sRest: String;
GUID: TGUID;
begin
Result := sPath;
if AnsiStartsText(' {', Result) and isWinVistaOrLater then
begin
sGUID := Copy(Result, 0, Pos(' }',Result)); //z.B. '{7C5A40EF-A0FB-4BFC-874A-C0F2E0B9FA8E}' = 'C:\Program Files (x86)'
sRest := Copy(Result, Pos(' }',Result)+1, Length(Result));
try
GUID := StringToGUID(sGUID);
if Succeeded(SHGetKnownFolderPath( GUID, 0, 0, chrBuffer)) then
begin
try
Result := chrBuffer + sRest;
finally
CoTaskMemFree(chrBuffer);
end;
end;
except
end;
end;
if AnsiContainsText(Result,' %') then
begin
if ExpandEnvironmentStrings(PChar(Result), chrOut, 1024) > 0 then
Result := chrOut;
end;
Result := Trim(Result);
end;
Nur Delphi schafft es, einem ein Lächeln zu schenken, wenn man sich beim Schreiben von := vertippt und stattdessen ein :) erscheint.
Geändert von CodeX (23. Apr 2016 um 20:14 Uhr)
Grund: Korrektur
|