Einfach selber definieren.
Delphi-Quellcode:
const
FOLDERID_Startup : TGUID = '{B97D20BB-F46A-4C97-BA10-5E3608430854}';
weitere GUIDs findest Du im Link von mm1256
https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
Delphi kennt die Konstanten noch nicht, sind ja erst seit Windows Vista vorhanden
Deshalb auch am besten auch dynamisch linken:
Delphi-Quellcode:
const
SHELL32_DLL :
String = '
SHELL32.DLL';
// Systemordner ab Vista ermitteln
// DYNAMISCHER FUNKTIONSIMPORT !!!
type
TShGetKnownFolderPath =
function(
const rfid : TGUID;
dwFlags : DWord;
hToken : THandle;
out ppszPath : PWideChar): HResult;
stdcall;
{*** Systemordner ab Vista ermitteln ***}
function ShGetKnownFolderPath(
const rfid: TGUID;
dwFlags: DWord;
hToken: THandle;
out ppszPath: PWideChar): HResult;
var
DLL_Handle : THandle;
DLL_ShGetKnownFolderPath : TShGetKnownFolderPath;
begin
Result := 0;
// Handle für die SHELL32.DLL erhalten
DLL_Handle := LoadLibrary(PChar(SHELL32_DLL));
// Wenn Handle vorhanden, Adressen der Funktionen ermitteln
if DLL_Handle <> 0
then begin
try
// Adressen ermitteln
@DLL_ShGetKnownFolderPath := GetProcAddress(DLL_Handle, '
SHGetKnownFolderPath');
// Wurde SHGetKnownFolderPath in der DLL gefunden?
if @DLL_ShGetKnownFolderPath <>
nil then begin
Result:= DLL_ShGetKnownFolderPath(rfid, dwFlags, hToken, ppszPath);
end else begin
RaiseLastOSError;
end;
finally
FreeLibrary(DLL_Handle);
end;
end else begin
RaiseLastOSError;
end;
end;