如何从Delphi中的已知文件夹GUID获取文件夹路径 [英] How to get folder path from Known folder GUID in Delphi

查看:125
本文介绍了如何从Delphi中的已知文件夹GUID获取文件夹路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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



我想使用Win API
(我不想用所有KNOWNFOLDERID和路径构建一个数组)。



谢谢

解决方案

只需调用 SHGetKnownFolderPath API函数。



由于此函数是在Vista中添加的,因此不会在该库单元中声明

  type 
KNOWNFOLDERID = TGuid;



函数SHGetKnownFolderPath(
const rfid:KNOWNFOLDERID;
dwFlags:DWORD;
hToken:THandle;
ppszPath:PWideChar
):结果stdcall;外部 Shell32.dll;

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


I have a KNOWNFOLDERID and I would like to know the corresponding path like C:....\folder.

KNOWNFOLDERID can be found here. http://msdn.microsoft.com/en-us/library/bb762584%28VS.85%29.aspx

I d like to use win api (I don't want to build an array with all KNOWNFOLDERID and paths).

Thanks

解决方案

Simply call the SHGetKnownFolderPath API function.

Since this function was added in Vista, it won't be declared in the library units that shipped with Delphi 7. So you'd need to declare it yourself.

type
  KNOWNFOLDERID = TGuid;

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

Now, since this function was added in Vista, attempts to call it on XP will lead to failures. So, I would recommend dealing with this by using CSIDL functions rather than the Vista known folder APIs.

这篇关于如何从Delphi中的已知文件夹GUID获取文件夹路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆