我有一个KNOWNFOLDERID
,我想知道相应的路径,比如C:。。。。\文件夹。
KNOWNFOLDERID
可以在这里找到。http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx
我想使用win-api(我不想构建一个包含所有KNOWNFOLDERID和路径的数组)。
感谢
只需调用SHGetKnownFolderPath
API函数。
由于这个函数是在Vista中添加的,所以它不会在Delphi7附带的库单元中声明。所以你需要自己申报。
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来处理此问题。
您无法构建已知文件夹ID和路径的数组,因为无法保证每个系统中的路径都相同。已知文件夹有默认路径,但它们只是默认路径,可以更改。许多公司环境都这样做,例如,将用户的文档文件夹移动到可以更容易备份的网络共享中。
在任何情况下,您提供的链接中的链接都包含您需要的所有信息:
SHGetKnownFolderPath是Win API函数,返回已知文件夹的路径。请注意,您需要释放自己通过调用CoTaskMemFree返回的unicode char指针。
如果您首选使用COM对象,则可以使用IKNOWNFOLDER。