我有一个KNOWNFOLDERID
,我想知道相应的路径如C:.... \文件夹。如何从德尔福的已知文件夹GUID获取文件夹路径
KNOWNFOLDERID
可以在这里找到。 http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx
我倒要用WIN API (我不希望建立与所有KNOWNFOLDERID和路径的数组)。
感谢
我有一个KNOWNFOLDERID
,我想知道相应的路径如C:.... \文件夹。如何从德尔福的已知文件夹GUID获取文件夹路径
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来处理此问题。
,因为没有保证的路径将在每一个系统一样。你不能知道的文件ID和路径的数组。有已知文件夹的默认路径,但它们只是默认值,可以更改。例如,许多企业环境都会将用户的文档文件夹移动到可以更容易地备份的网络共享中。
在任何情况下,您所提供的链接一个链接包含所有你需要的信息:
SHGetKnownFolderPath是返回已知文件夹的路径赢API函数。请注意,您需要释放通过调用CoTaskMemFree返回的unicode字符指针。
如果您偏好使用COM对象,则可以使用IKNOWNFOLDER来代替。
GUID以字符串形式给出。 我可以使用Stringtoguid将字符串转换为GUID,然后调用SHGetKnownFolderPath – user382591 2013-02-10 22:07:08
当然,你可以做到这一点。 – 2013-02-10 22:11:42