function GetSpecialFolderPath(const Folder: integer): string;
var
PIDL: PItemIDList;
Path: array[0…MAX_PATH] of char;
Malloc: IMalloc;
begin
Path := ‚‘;
if Succeeded((SHGetSpecialFolderLocation(0, Folder, PIDL))) then
if (SHGetPathFromIDList(PIDL, Path)) then
if Succeeded(ShGetMalloc(Malloc)) then
begin
Malloc.Free(PIDL);
Malloc := nil;
end;
Result := Path;
end;
[Now Supported on Windows NT]
Retrieves the location of a special folder.
WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation(;
HWND hwndOwner,
int nFolder,
LPITEMIDLIST *ppidl
);
Parameters
hwndOwner
Handle of the owner window that the client should specify if it displays a dialog box or message box.
nFolder
Value specifying the folder to retrieve the location of. This parameter can be one of the following values:
CSIDL_BITBUCKET Recycle bin ¾ file system directory containing file objects in the user’s recycle bin. The location of this directory is not in the registry; it is marked with the hidden and system attributes to prevent the user from moving or deleting it.
CSIDL_CONTROLS Control Panel ¾ virtual folder containing icons for the control panel applications.
CSIDL_DESKTOP Windows desktop ¾ virtual folder at the root of the name space.
CSIDL_DESKTOPDIRECTORY File system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself).
CSIDL_DRIVES My Computer ¾ virtual folder containing everything on the local computer: storage devices, printers, and Control Panel. The folder may also contain mapped network drives.
CSIDL_FONTS Virtual folder containing fonts.
CSIDL_NETHOOD File system directory containing objects that appear in the network neighborhood.
CSIDL_NETWORK Network Neighborhood ¾ virtual folder representing the top level of the network hierarchy.
CSIDL_PERSONAL File system directory that serves as a common respository for documents.
CSIDL_PRINTERS Printers folder ¾ virtual folder containing installed printers.
CSIDL_PROGRAMS File system directory that contains the user’s program groups (which are also file system directories).
CSIDL_RECENT File system directory that contains the user’s most recently used documents.
CSIDL_SENDTO File system directory that contains Send To menu items.
CSIDL_STARTMENU File system directory containing Start menu items.
CSIDL_STARTUP File system directory that corresponds to the user’s Startup program group.
CSIDL_TEMPLATES File system directory that serves as a common repository for document templates.
ppidl
Address that receives a pointer to an item identifier list specifying the folder’s location relative to the root of the name space (the desktop).
Return Values
Returns NOERROR if successful or an OLE-defined error result otherwise.