SHLoadIndirectString 函数 (shlwapi.h)

以间接字符串的形式给定该资源时,提取指定的文本资源 (以“@”符号) 开头的字符串。

语法

LWSTDAPI SHLoadIndirectString(
  [in]  PCWSTR pszSource,
  [out] PWSTR  pszOutBuf,
  [in]  UINT   cchOutBuf,
        void   **ppvReserved
);

参数

[in] pszSource

类型: PCWSTR

指向缓冲区的指针,该缓冲区包含将从中检索资源的间接字符串。 此字符串应以“@”符号开头,并使用“备注”部分中讨论的窗体之一。 此函数将成功接受一个不以“@”符号开头的字符串,但该字符串将直接传递给 pszOutBuf

[out] pszOutBuf

类型: PWSTR

指向缓冲区的指针,当此函数成功返回时,该缓冲区接收文本资源。 pszOutBufpszSource 可以指向同一个缓冲区,在这种情况下,将覆盖原始字符串。

[in] cchOutBuf

类型: UINT

pszOutBuf 指向的缓冲区的大小(以字符为单位)。

ppvReserved

类型: void**

未使用;设置为 NULL

返回值

类型: HRESULT

如果此函数成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。

注解

间接字符串可以采用多种形式提供,每种形式都有其自己的解释:

  • 文件名和资源 ID “”语法 @filename,资源“”

    字符串是从名为 的文件中提取的,使用 资源 值作为定位符。 如果资源值为零或更大,则数字将成为二进制文件中字符串的索引。 如果该数字为负数,则它将成为资源 ID。 检索到的字符串将复制到输出缓冲区,函数返回S_OK。

  • 具有版本修饰符 “”语法的文件名和资源 ID @filename,resource;v2“”

    当资源发生更改但仍使用与旧资源相同的索引或 ID 时,可以使用此形式。 如果没有版本修饰符,多语言用户界面 (MUI) 缓存将无法识别资源已更改且不会刷新。 通过追加版本修饰符,该值被视为新资源并添加到缓存中。 请注意,建议对新资源使用新 ID 或索引,并且仅在不可能时使用版本修饰符。

  • PRI 文件路径和资源 ID “”语法 @{PRIFilepath?resource} “'”

    包资源索引 (PRI) 是 Windows 8 中引入的二进制格式,其中包含索引资源或对资源的引用。 .pri 文件作为应用的包的一部分进行捆绑。 有关 .pri 文件的详细信息,请参阅 在 Windows 应用商店应用中创建和检索资源

    字符串是从名为 的 .pri 文件中提取的,使用 资源 作为定位符。 检索到的字符串将复制到输出缓冲区,函数返回S_OK。 字符串基于当前的 Shell 环境或 ResourceContext 提取。

    此处显示了此类间接字符串的示例。

    
    @{C:\Program Files\WindowsApps\Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe\resources.pri? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
    
  • 包名称和资源 ID “”语法 @{PackageFullName?resource} “””

    字符串是从存储在 PackageFullName 标识的包的应用根目录中的 Resources.pri 文件中提取的,使用 资源 作为定位符。 检索到的字符串将复制到输出缓冲区,函数返回S_OK。 字符串是根据应用的环境或 ResourceContext 提取的。

    注意 此字符串必须引用为当前用户安装的包。 否则,调用将失败。
     
    此处显示了此类间接字符串的示例。 在此示例中,引用名称是完全限定的,但它不包含命名空间 (例如“resources”) 。 部署堆栈扩展名称以在所有命名空间中查找它。
    
    @{Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe? ms-resource://Microsoft.Camera/manifestAppDescription}
    

    在下一个示例中,完全限定的引用名称确实指定了将查找限制为的命名空间。

    
    @{Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
    
如果字符串不是间接字符串,则直接将字符串复制到 pszOutBuf ,并且函数返回S_OK。

要求

要求
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 shlwapi.h
Library Shlwapi.lib
DLL Shlwapi.dll (版本 5.5 或更高版本)