在delphi中获取我的文档文件夹路径
我使用以下代码来获取特殊目录在delphi中获取我的文档文件夹路径,delphi,directory,Delphi,Directory,我使用以下代码来获取特殊目录 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
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',我认为它工作得很好
但我怀疑这是所有windows PC上的mydocuments路径(personalfolder/documents),用户是否可以更改此结构并将mydocuments文件夹设置为其他文件夹(例如:c:\documents)
如果用户更改路径,请给我一个正确的方法,我想知道mydocuments文件夹(My Documents或Documents)的名称。CSIDL\u PERSONAL是My Documents文件夹: CSIDL_个人文件夹文件 版本6.0。创建的虚拟文件夹 表示“我的文档”桌面 项目。这相当于 CSIDL_MYDOCUMENTS 版本6.0之前的版本。档案 用于物理访问的系统目录 存储用户的公共存储库 文件。典型的路径是 C:\Documents and Settings\username\My 文件。这应该是 区别于虚拟我的 命名空间中的Documents文件夹。到 访问该虚拟文件夹,请使用 SHGetFolderLocation,返回 虚拟位置的ItemIdle列表, 或参考中描述的技术 管理文件系统。管理文件系统
请参阅:有关所有可用CSIDL常量的列表和说明,如果您使用的是最新版本的Delphi(XE5或更高版本),则可以使用新的平台无关类。基本上包括
System.IOUtils
在您的uses
中,然后使用TPath.GetDocumentsPath
获取文档文件夹
查看请注意,某些版本的Windows使用本地化路径名。除非您完全确定正在运行的版本和语言,否则千万不要将“特殊”文件夹名称添加为英语或任何语言的字符串常量。目标系统上的名称可能不正确。始终使用一种特定的CSIDL_uuu或其较新的等效工具。