Mega Code Archive

 
Categories / Delphi / System
 

To read a path for system folder

Title: To read a path for system folder Question: This code allow to get a path for any system folder Answer: I want to share the code which allows to receive a path to some system folder (StartUp, Recent Files etc). As you know, the path can be different on other computers (depends from operationg system, localization, user profile and user settings). This code allows to read a current value: uses ShlObj, ActiveX; function GetSystemPath(Folder: Integer): string; var PIDL: PItemIDList; Path: LPSTR; AMalloc: IMalloc; begin Path := StrAlloc(MAX_PATH); SHGetSpecialFolderLocation(Application.Handle, Folder, PIDL); if SHGetPathFromIDList(PIDL, Path) then Result := Path; SHGetMalloc(AMalloc); AMalloc.Free(PIDL); StrDispose(Path); end; Now you can call this function with different parameters. For example: CSIDL_DESKTOP for WINDOWS\Desktop CSIDL_DESKTOPDIRECTORY for WINDOWS\Desktop CSIDL_FONTS for WINDOWS\FONTS CSIDL_NETHOOD for WINDOWS\NetHood CSIDL_PERSONAL for X:\My Documents CSIDL_PROGRAMS for WINDOWS\StartMenu\Programs CSIDL_RECENT for WINDOWS\Recent CSIDL_SENDTO for WINDOWS\SendTo CSIDL_STARTMENU for WINDOWS\Start Menu CSIDL_STARTUP for WINDOWS\Start Menu\Programs\StartUp CSIDL_TEMPLATES for WINDOWS\ShellNew With best regards, Mike Shkolnik. E-Mail: mshkolnik@scalabium.com mshkolnik@yahoo.com WEB: http://www.scalabium.com SMComponents Mailing list: http://www.onelist.com/subscribe/SMComponents