Obtener las carpetas especiales de Windows
Artículo por Club Developers · 31 diciembre 2005
5569 vistas
En el API de Windows existe la función SHGetSpecialFolderLocation que permite recuperar la ruta de las carpetas especiales de Windows: Escritorio, Menú Inicio...
Según la carpeta que queramos obtener tendremos que usar unaa de las variables siguientes:
CSIDL_APPDATA: carpeta de "datos de programas".
CSIDL_COMMON_FAVORITES: carpeta de "Favoritos" común a todos los usuarios.
CSIDL_COMMON_STARTMENU: carpeta del "Menú Inicio" común a todos los usuarios.
CSIDL_COMMON_PROGRAMS: carpeta "Programas" del menú Inicio común a todos los usuarios.
CSIDL_COMMON_STARTUP: carpeta "Inicio" dentro de "Inicio|Programas" común a todos los usuarios.
CSIDL_COMMON_DESKTOPDIRECTORY: carpeta "Escritorio" común a todos los usuarios.
CSIDL_COOKIES: carpeta donde se almacenan las cookies de Internet Explorer.
CSIDL_DESKTOP: "Escritorio" del usuario activo.
CSIDL_DESKTOPDIRECTORY: lo mismo que el anterior.
CSIDL_FAVORITES: carpeta "Favoritos" del usuario activo.
CSIDL_FONTS: carpeta donde se almacenan las fuentes (fonts).
CSIDL_HISTORY: carpeta que contienen el historial de Internet Explorer.
CSIDL_INTERNET_CACHE: carpeta donde se almacenan los archivos temporales de Internet Explorer.
CSIDL_NETHOOD: carpeta de ·Entorno de Red" del usuario activo.
CSIDL_PERSONAL: carpeta de "Mis Documentos" del usuario activo.
CSIDL_PRINTHOOD: carpeta donde se almacenan las impresoras.
CSIDL_PROGRAMS: carpeta "Programas" del menú Inicio del usuario activo.
CSIDL_RECENT: carpeta donde se almacenan un enlace a los ficheros abiertos recientemente.
CSIDL_SENDTO: carpeta donde se encuentran los accesos de "Enviar a".
CSIDL_STARTMENU: carpeta del "Menú Inicio" del usuario activo.
CSIDL_STARTUP: carpeta "Inicio" de Inicio|Programas del usuario activo.
CSIDL_TEMPLATES: carpeta de plantillas de documentos de Windows.
delphi
uses Shlobj; function SpecialFolder(Folder: Integer): String; var  SFolder : pItemIDList;  SpecialPath : Array[0..MAX_PATH] Of Char; begin  SHGetSpecialFolderLocation(Form.Handle, Folder, SFolder);  SHGetPathFromIDList(SFolder, SpecialPath);  Result := StrPas(SpecialPath); end; { Application : } procedure TForm.MyButtonClick(Sender: TObject); begin  MyLabel.Caption := SpecialFolder(CSIDL_PERSONAL); end;
Según la carpeta que queramos obtener tendremos que usar unaa de las variables siguientes:
CSIDL_APPDATA: carpeta de "datos de programas".
CSIDL_COMMON_FAVORITES: carpeta de "Favoritos" común a todos los usuarios.
CSIDL_COMMON_STARTMENU: carpeta del "Menú Inicio" común a todos los usuarios.
CSIDL_COMMON_PROGRAMS: carpeta "Programas" del menú Inicio común a todos los usuarios.
CSIDL_COMMON_STARTUP: carpeta "Inicio" dentro de "Inicio|Programas" común a todos los usuarios.
CSIDL_COMMON_DESKTOPDIRECTORY: carpeta "Escritorio" común a todos los usuarios.
CSIDL_COOKIES: carpeta donde se almacenan las cookies de Internet Explorer.
CSIDL_DESKTOP: "Escritorio" del usuario activo.
CSIDL_DESKTOPDIRECTORY: lo mismo que el anterior.
CSIDL_FAVORITES: carpeta "Favoritos" del usuario activo.
CSIDL_FONTS: carpeta donde se almacenan las fuentes (fonts).
CSIDL_HISTORY: carpeta que contienen el historial de Internet Explorer.
CSIDL_INTERNET_CACHE: carpeta donde se almacenan los archivos temporales de Internet Explorer.
CSIDL_NETHOOD: carpeta de ·Entorno de Red" del usuario activo.
CSIDL_PERSONAL: carpeta de "Mis Documentos" del usuario activo.
CSIDL_PRINTHOOD: carpeta donde se almacenan las impresoras.
CSIDL_PROGRAMS: carpeta "Programas" del menú Inicio del usuario activo.
CSIDL_RECENT: carpeta donde se almacenan un enlace a los ficheros abiertos recientemente.
CSIDL_SENDTO: carpeta donde se encuentran los accesos de "Enviar a".
CSIDL_STARTMENU: carpeta del "Menú Inicio" del usuario activo.
CSIDL_STARTUP: carpeta "Inicio" de Inicio|Programas del usuario activo.
CSIDL_TEMPLATES: carpeta de plantillas de documentos de Windows.