Hallo,
im Folgenden einige Konstanten, die in der
Unit ShlObj.pas nicht definiert sind :
Delphi-Quellcode:
implementation
{$R *.dfm}
uses ShlObj;
Const
CSIDL_CURR_MUSIK = $000D; // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Musik
CSIDL_CURR_VIDEO = $000E; // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Videos
CSIDL_LOCAL_APPDATA = $001C; // Dokumente und Einstellungen\[CurrentUser]\Anwendungsdaten
CSIDL_COMMON_APPDATA = $0023; // Dokumente und Einstellungen\AllUsers\Anwendungsdaten
CSIDL_WINDOWS = $0024; // Windows-Verzeichnis
CSIDL_SYSTEM = $0025; // Windows\System32-Verzeichnis
CSIDL_PROGRAMS_FIRST = $0026; // Programmverzeichnis der ersten(!!!) Windows-Partition,
// muss nicht die aktuelle Partition sein
CSIDL_CURR_PICTURES = $0027; // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Bilder
CSIDL_CURRUSER = $0028; // Dokumente und Einstellungen\[CurrentUser]
CSIDL_SYSTEM2 = $0029; // Windows\System32-Verzeichnis
CSIDL_SHARED_FILES = $002B; // Programme\Gemeinsame Dateien
CSIDL_COMMON_TEMPLATES = $002D; // Dokumente und Einstellungen\All Users\Vorlagen
CSIDL_COMMON_DOKUMENTS = $002E; // Dokumente und Einstellungen\All Users\Dokumente
CSIDL_COMMON_MANAGEMENT = $002F; // Dokumente und Einstellungen\All Users\Startmenü\Programme\Verwaltung
CSIDL_CURR_MANAGEMENT = $0030; // Dokumente und Einstellungen\[CurrentUser]\Startmenü\Programme\Verwaltung
CSIDL_COMMON_MUSIK = $0035; // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Musik
CSIDL_COMMON_PICTURES = $0036; // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Bilder
CSIDL_COMMON_VIDEO = $0037; // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Videos
CSIDL_RESOURCES = $0038; // Windows\Resources
CSIDL_RESOURCES_C_SPEC = $0039; // Windows\Resources\0407
CSIDL_WINBURNING = $003B; // [microsoft brennerverzeichnis >cd burning<]
function GetSpecialFolder (aFolder: Integer): String;
var
pIdL: PItemIDList;
Path: Array [0..Max_Path] Of Char;
Allocator: IMalloc;
begin
// ItemIdList für den Ordner holen
SHGetSpecialFolderLocation (0, aFolder, pIdL);
// ItemIdList in String umwandeln lassen
SHGetPathFromIDList (pIDL, Path);
// Speicher wieder freigeben
if Succeeded (SHGetMalloc (Allocator)) then
begin
Allocator.Free (pIdL);
{$IFDEF VER100}
Allocator.Release;
{$ENDIF}
end;
Result := Path;
end;
Markus H.