AssocQueryStringA 函数 (shlwapi.h)

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

Syntax

LWSTDAPI AssocQueryStringA(
  [in]            ASSOCF   flags,
  [in]            ASSOCSTR str,
  [in]            LPCSTR   pszAssoc,
  [in, optional]  LPCSTR   pszExtra,
  [out, optional] LPSTR    pszOut,
  [in, out]       DWORD    *pcchOut
);

参数

[in] flags

类型: ASSOCF

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

[in] str

类型: ASSOCSTR

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

[in] pszAssoc

类型:LPCTSTR

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

  1. 文件扩展名:文件扩展名,如 .txt。
  2. CLSID:采用标准“{GUID}”格式的 CLSID GUID。
  3. ProgID:应用程序的 ProgID,如 Word。Document.8
  4. 可执行文件名称:应用程序的 .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,并将该值设置为所需的缓冲区大小。

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

返回值

类型:HRESULT

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

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

注解

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

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

注释

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

要求

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