如何从Delphi中的已知文件夹GUID获取文件夹路径

use*_*591 6 windows delphi winapi delphi-7 known-folders

我有一个KNOWNFOLDERID,我想知道相应的路径,如C:.... \文件夹.

KNOWNFOLDERID可以在这里找到. http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx

我想使用win api (我不想用所有KNOWNFOLDERID和路径构建一个数组).

谢谢

Dav*_*nan 5

只需调用SHGetKnownFolderPathAPI函数即可.

由于此功能是在Vista中添加的,因此不会在Delphi 7附带的库单元中声明.因此您需要自己声明它.

type
  KNOWNFOLDERID = TGuid;

function SHGetKnownFolderPath(
  const rfid: KNOWNFOLDERID;
  dwFlags: DWORD; 
  hToken: THandle; 
  out ppszPath: PWideChar
): HResult; stdcall; external 'Shell32.dll';
Run Code Online (Sandbox Code Playgroud)

现在,由于在Vista中添加了此功能,尝试在XP上调用它将导致失败.因此,我建议使用CSIDL函数而不是Vista已知文件夹API来处理此问题.