SHGetFolderPathAndSubDirA 函数 (shlobj_core.h)
获取文件夹的路径并追加用户提供的子文件夹路径。
语法
HRESULT SHGetFolderPathAndSubDirA(
[in] HWND hwnd,
[in] int csidl,
[in] HANDLE hToken,
[in] DWORD dwFlags,
[in] LPCSTR pszSubDir,
[out] LPSTR pszPath
);
参数
[in] hwnd
类型:HWND
保留。
[in] csidl
类型: int
标识要检索其路径的文件夹的 CSIDL 值。 只有真实文件夹有效。 如果指定了虚拟文件夹,此函数将失败。 通过将文件夹的 CSIDL 与CSIDL_FLAG_CREATE组合,可以使用 SHGetFolderPathAndSubDir 强制创建文件夹。
[in] hToken
类型: HANDLE
表示特定用户的 访问令牌 。 对于早于 Windows 2000 的系统,请将此值设置为 NULL。 对于更高版本的系统, hToken 通常设置为 NULL,但不总是设置为 NULL。 对于可以包含多个用户但被视为属于单个用户的文件夹,可能需要为 hToken 分配一个值。 此类型最常用的文件夹是 “我的文档”。
[in] dwFlags
类型:DWORD
指定要返回的路径是文件夹的实际路径还是默认路径。 当用户移动或重命名与 CSIDL 值关联的文件夹时,会使用此值。
SHGFP_TYPE_CURRENT
返回文件夹的当前路径。
SHGFP_TYPE_DEFAULT
返回文件夹的默认路径。
[in] pszSubDir
类型: LPCTSTR
指向要追加到文件夹路径的子路径的指针。 这是长度为 MAX_PATH 的 以 null 结尾的字符串。 如果不创建新目录,则此目录必须是现有子目录,否则函数将返回错误。 如果未追加子路径,则此值可以为 NULL 。
[out] pszPath
类型: LPTSTR
当此函数返回时,此值指向目录路径和追加的子路径。 这是长度为 MAX_PATH 的 以 null 结尾的字符串。 当函数返回错误代码时,此字符串为空。
返回值
类型: HRESULT
如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
注意
shlobj_core.h 标头将 SHGetFolderPathAndSubDir 定义为别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将非特定编码别名与非非特定编码的代码混合使用可能会导致不匹配,从而导致编译或运行时错误。 有关详细信息,请参阅 函数原型的约定。
要求
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | shlobj_core.h (包括 Shlobj.h、Shlobj_core.h) |
Library | Shell32.lib |
DLL | Shell32.dll (版本 5.60 或更高版本) |