Der "SpecialFolder" ist unter Vista der Ordner bei dem man keine
User-Rechte benötigt.
Code
[B][COLOR=#0000af]function[/COLOR][/B] GetSpecialFolder(hWindow: HWND; Folder: Integer): [COLOR=#0000af][B]String[/B][/COLOR]; [COLOR=#0000af][B]var[/B][/COLOR] pMalloc: IMalloc; pidl: PItemIDList; Path: PChar; [COLOR=#0000af][B]begin[/B][/COLOR] [COLOR=#008000]// get IMalloc interface pointer[/COLOR] [COLOR=#0000af][B]if[/B][/COLOR] (SHGetMalloc(pMalloc) <> S_OK) [COLOR=#0000af][B]then[/B][/COLOR] [COLOR=#0000af][B]begin[/B][/COLOR] MessageBox(hWindow, '[COLOR=#000080]Couldn[/COLOR]''[COLOR=#000080]t get pointer to IMalloc interface.[/COLOR]', '[COLOR=#000080]SHGetMalloc(pMalloc)[/COLOR]', 16); Exit; [COLOR=#0000af][B]end[/B][/COLOR]; [COLOR=#008000]// retrieve path[/COLOR] SHGetSpecialFolderLocation(hWindow, Folder, pidl); GetMem(Path, MAX_PATH); SHGetPathFromIDList(pidl, Path); Result :[COLOR=#0000af]=[/COLOR] Path; FreeMem(Path); [COLOR=#008000]// free memory allocated by SHGetSpecialFolderLocation[/COLOR] pMalloc.Free(pidl); [COLOR=#0000af][B]end[/B][/COLOR];
Nun der Code um den Pfad des Ordners in einer Box anzuzeigen.