Code:

uses

ActiveX, ShlObj;

 

procedure TForm1.Button1Click(Sender: TObject);

var

pShell, ShellFolder: IShellFolder;

pidl: PITEMIDLIST;

PMalloc: IMalloc;

sName: string;

EnumIDList: IEnumIDList;

pceltFetched: ULONG;

lpName: TStrRet;

slDirectories: TStringList;

begin

slDirectories := TStringList.Create;

try

   SHGetDesktopFolder(ShellFolder);

   SHGetSpecialFolderLocation(0,CSIDL_DRIVES, pidl);

   SHGetMalloc(PMalloc);

   ShellFolder.BindToObject(pidl, nil, IID_IShellFolder, Pointer(pShell));

   pShell.EnumObjects(0,SHCONTF_FOLDERS, EnumIDList);

   while EnumIDList.Next(1,pidl, pceltFetched) = S_ok do

   begin

     pceltFetched := 0;

     lpName.uType := 0;

     pShell.GetDisplayNameOf(pidl, SHGDN_FORPARSING, lpName);

     sName := lpName.pOleStr;

     slDirectories.Add(sName);

   end;

   ListBox1.Items.Assign(sldirectories);

finally

   pMalloc._Release;

   pMalloc := nil;

   slDirectories.Free;

end;

 

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!