Como acessar o Desktop Directory do usuário atual ou outros diretórios

 

A função é muito simples, mas é difícil encontrar os parâmetros corretos:

 

uses ShlObj;

 

function GetDesktopDirectory: string;

var

  PIDL: PItemIDList;

  InFolder: array[0..MAX_PATH] of Char;

begin

  SHGetSpecialFolderLocation(0, CSIDL_DESKTOPDIRECTORY, PIDL);

  SHGetPathFromIDList(PIDL, InFolder);

  Result := InFolder;

end;

 

Alterando o parâmetro, você pode acessar outras Special Folders, como:

 

CSIDL_FAVORITES - Explorer Favorites

CSIDL_PROGRAMS - Program Files

CSIDL_APPDATA - Application Data

CSIDL_INTERNET_CACHE

CSIDL_COOKIES

CSIDL_HISTORY

 

Diretórios comuns – Diretório base em um sistema de vários perfis (Multi Profile)

CSIDL_COMMON_STARTMENU -

CSIDL_COMMON_PROGRAMS

CSIDL_COMMON_STARTUP

CSIDL_COMMON_DESKTOPDIRECTORY

CSIDL_COMMON_FAVORITES