Delphi-Quellcode:
function GetShellFolder(CSIDL: integer): string;
var
pidl : PItemIdList;
FolderPath : string;
SystemFolder : Integer;
Malloc : IMalloc;
begin
Malloc := nil;
FolderPath := '';
SHGetMalloc(Malloc);
if Malloc = nil then
begin
Result := FolderPath;
Exit;
end;
try
SystemFolder := CSIDL;
if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
begin
SetLength(FolderPath, max_path);
if SHGetPathFromIDList(pidl, PChar(FolderPath)) then
begin
SetLength(FolderPath, length(PChar(FolderPath)));
end;
end;
Result := FolderPath;
finally
Malloc.Free(pidl);
end;
end;
In die uses Klausel müssen noch die Units
shlobj und
ActiveX aufgenommen werden.
Diese Funktion eignet sich auch dazu andere spezielle Systemordner zu ermitteln. Übergibt man hier die Konstante
CSIDL_APPDATA (
$001A), bekommt man genau den gewünschten Ordner, nämlich C:\Dokumente und Einstellungen\<Benutzername>\Anwendungsdaten.
GetShellFolder(CSIDL_APPDATA)+'tipp o meter\tasten.txt'
Habe es Dir mal zusammenkopiert, etwas mehr Einsatz von Dir könnte man schon erwarten.
Grüße
Klaus