AssocQueryStringW 函数 (shlwapi.h)

在注册表中搜索和检索文件或协议关联相关字符串。

语法

LWSTDAPI AssocQueryStringW(
  [in]            ASSOCF   flags,
  [in]            ASSOCSTR str,
  [in]            LPCWSTR  pszAssoc,
  [in, optional]  LPCWSTR  pszExtra,
  [out, optional] LPWSTR   pszOut,
  [in, out]       DWORD    *pcchOut
);

参数

[in] flags

类型:ASSOCF

可用于控制搜索的标志。 它可以是 ASSOCF 值的任意组合,但只能包含一个ASSOCF_INIT值。

[in] str

类型:ASSOCSTR

ASSOCSTR 值,该值指定要返回的字符串类型。

[in] pszAssoc

类型:LPCTSTR

指向用于确定根键的以 null 结尾的字符串的指针。 可以使用以下四种类型的字符串。

文件扩展名

文件扩展名,如 .txt。

CLSID

采用标准“{GUID}”格式的 CLSID GUID。

ProgID

应用程序的 ProgID,如 Word.Document.8

可执行文件名称

应用程序 .exe 文件的名称。 必须在 标志中设置 ASSOCF_OPEN_BYEXENAME 标志。

[in, optional] pszExtra

类型:LPCTSTR

可选的以 null 结尾的字符串,其中包含有关字符串位置的其他信息。 它通常设置为 Shell 谓词,例如 打开。 如果未使用此参数,请将此参数设置为 NULL

[out, optional] pszOut

类型:LPTSTR

指向以 null 结尾的字符串的指针,当此函数成功返回时,将接收请求的字符串。 将此参数设置为 NULL 以检索所需的缓冲区大小。

[in, out] pcchOut

类型:DWORD*

指向调用函数的值的指针设置为 pszOut 缓冲区中的字符数。 当函数成功返回时,该值将设置为实际放置在缓冲区中的字符数。

如果在 标志中设置了 ASSOCF_NOTRUNCATE 标志,pszOut 中指定的缓冲区太小,则函数将返回E_POINTER,并将该值设置为所需的缓冲区大小。

如果 pszOut 为 NULL,则该函数将返回 S_FALSE,pcchOut 指向缓冲区所需的大小(以字符为单位)。

返回值

类型:HRESULT

返回标准 COM 错误值,包括以下内容:

错误 意义
S_OK 成功。
E_POINTER pszOut 缓冲区太小,无法容纳整个字符串。
S_FALSE pszOutNULLpcchOut 包含所需的缓冲区大小。

言论

此函数是 IQueryAssociations 接口的包装器。 AssocQueryString 函数旨在简化使用 IQueryAssociations 接口的过程。

选择项后,主机必须确定哪个(如果有)预览处理程序可用于该项目。 预览处理程序通常在文件扩展名或 ProgID 上注册,但某些预览处理程序仅针对特定 shell 文件夹中的项目实例化(例如,MAPI 预览处理程序与来自 MAPI Shell 文件夹的任何项目相关联)。 因此,主机必须使用 IQueryAssociations 来确定要使用的预览处理程序。 有关文件和协议关联函数的工作原理的进一步讨论,请参阅 IQueryAssociations

注意

shlwapi.h 标头将 AssocQueryString 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional、Windows XP [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 shlwapi.h
Shlwapi.lib
DLL Shlwapi.dll (版本 5.0 或更高版本)