Путь к папке «Мои документы» в Delphi - PullRequest
10 голосов
/ 01 ноября 2010

Я использую следующий код для получения специальных каталогов

uses
  ActiveX, ShlObj;

{...}

procedure TForm1.Button1Click(Sender: TObject);
// Replace CSIDL_HISTORY with the constants below
var
  Allocator: IMalloc;
  SpecialDir: PItemIdList;
  FBuf: array[0..MAX_PATH] of Char;
  PerDir: string;
begin
  if SHGetMalloc(Allocator) = NOERROR then
  begin
    SHGetSpecialFolderLocation(Form1.Handle, CSIDL_PERSONAL, SpecialDir);
    SHGetPathFromIDList(SpecialDir, @FBuf[0]);
    Allocator.Free(SpecialDir);
    ShowMessage(string(FBuf));
  end;
end;

И теперь я хочу получить путь к моим документам, поэтому я использую mydocfolderpath: = string (FBuf) + '\ Documents' и я думаю, что этоработает хорошо, но я сомневаюсь, что это путь mydocuments на всех компьютерах с Windows (личная папка / документы), пользователь может изменить эту структуру и сделать папку с моими документами как-нибудь еще (например, c: \ documents), если пользователь изменит путь, дайте мнеи мне нравится знать, как называется папка mydocuments (Мои документы или документы)

Ответы [ 2 ]

17 голосов
/ 04 сентября 2014

Если вы используете последнюю версию Delphi (XE5 или выше), вы можете использовать новые классы, независимые от платформы.В основном включите System.IOUtils в ваш uses, затем используйте TPath.GetDocumentsPath, чтобы получить папку с документами.

Проверьте Doc Wiki

15 голосов
/ 01 ноября 2010

CSIDL_PERSONAL - папка «Мои документы»:

CSIDL_PERSONAL FOLDERID_Documents Версия 6.0. Виртуальная папка, которая представляет рабочий стол My Documents вещь. Это эквивалентно CSIDL_MYDOCUMENTS.

Предыдущая версия 6.0. Файл системный каталог, используемый для физического хранить общий репозиторий пользователя документы. Типичный путь C: \ Documents and Settings \ имя пользователя \ My Документы. Это должно быть отличается от виртуального My Папка документов в пространстве имен. к получить доступ к этой виртуальной папке, используйте SHGetFolderLocation, который возвращает ITEMIDLIST для виртуального местоположения, или обратитесь к технике, описанной в Управление файловой системой. Управление файловой системой.

См. http://msdn.microsoft.com/en-us/library/bb762494(VS.85).aspx для получения списка и описания всех доступных констант CSIDL

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...