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

标签 windows delphi winapi delphi-7 known-folders

我有一个 KNOWNFOLDERID,我想知道相应的路径,如 C:....\folder。

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

我想使用win api (我不想构建包含所有 KNOWNFOLDERID 和路径的数组)。

谢谢

最佳答案

只需调用 SHGetKnownFolderPath API函数。

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

type
  KNOWNFOLDERID = TGuid;

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

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

关于windows - 如何从 Delphi 中的已知文件夹 GUID 获取文件夹路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14802473/

相关文章:

c - 如何正确释放GDI资源?

c++ - 如何获取当前进程的线程 ID 列表

windows - CreateProcess() 如何知道新进程经历了哪个子系统?

windows - ggplot-s 是否依赖于上一个桌面 session 属性?

delphi - Delphi无法检索进程内存使用情况

delphi - 使用 "HNetCfg.NATUPnP"Ole对象进行端口转发失败

Delphi Region 编译器指令 - 向后兼容单元文件?

c++ - 在 C++ 中声明一个 const BYTE *

c++ - 使用 FILE_ATTRIBUTE_TEMPORARY 和 FILE_FLAG_DELETE_ON_CLOSE

winapi - 学习 win32 API 值得吗?