Windows - pastas de sistema

Top  Previous  Next

uses ShlObj

 

type

  TPastasdoSistema = Record

    AmbienteRede  : string;

    Desktop       : string;

    EnviarPara    : string;

    Fontes        : string;

    Iniciar       : string;

    MenuIniciar   : string;

    MeusDocumentos: string;

    Programas     : string;

    Recentes      : string;

  end;

 

function xPastasdoSistema: TPastasdoSistema;

  // função interna que captura a pasta

  function xFolder(C: integer): string;

  var

    ItemIDList: PItemIDList;

  begin

    SetLength(Result,MAX_PATH);

    SHGetSpecialFolderLocation(Application.Handle, C, ItemIDList);

    SHGetPathFromIDList(ItemIdList,PChar(Result));

    Result := StrPas(PChar(Result));  // Tira sujeira do PCHAR

  end;

begin

  with Result do

  begin

    AmbienteRede   := xFolder(CSIDL_NETHOOD  ) + '\';

    MeusDocumentos := xFolder(CSIDL_PERSONAL ) + '\';

    Desktop        := xFolder(CSIDL_DESKTOP  ) + '\';

    Fontes         := xFolder(CSIDL_FONTS    ) + '\';

    EnviarPara     := xFolder(CSIDL_SENDTO   ) + '\';

    MenuIniciar    := xFolder(CSIDL_STARTMENU) + '\';

    Iniciar        := xFolder(CSIDL_STARTUP  ) + '\';

    Programas      := xFolder(CSIDL_PROGRAMS ) + '\';

    Recentes       := xFolder(CSIDL_RECENT   ) + '\';

  end;

end;