Obtener las carpetas especiales de Windows

5267 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...



delphi
  1. uses Shlobj;
  2.  
  3. function SpecialFolder(Folder: Integer): String;
  4. var
  5.   SFolder : pItemIDList;
  6.   SpecialPath : Array[0..MAX_PATH] Of Char;
  7. begin
  8.   SHGetSpecialFolderLocation(Form.Handle, Folder, SFolder);
  9.   SHGetPathFromIDList(SFolder, SpecialPath);
  10.   Result := StrPas(SpecialPath);
  11. end;
  12.  
  13. { Application : }
  14. procedure TForm.MyButtonClick(Sender: TObject);
  15. begin
  16.   MyLabel.Caption := SpecialFolder(CSIDL_PERSONAL);
  17. 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.