Функция SHLoadIndirectString (shlwapi.h)
Извлекает указанный текстовый ресурс при его указании в виде непрямой строки (строка, начинающаяся с символа @).
Синтаксис
LWSTDAPI SHLoadIndirectString(
[in] PCWSTR pszSource,
[out] PWSTR pszOutBuf,
[in] UINT cchOutBuf,
void **ppvReserved
);
Параметры
[in] pszSource
Тип: PCWSTR
Указатель на буфер, содержащий непрямую строку, из которой будет извлечен ресурс. Эта строка должна начинаться с символа "@" и использовать одну из форм, рассмотренных в разделе Примечания. Эта функция будет успешно принимать строку, которая не начинается с символа "@", но она будет просто передана в pszOutBuf без изменений.
[out] pszOutBuf
Тип: PWSTR
Указатель на буфер, который при успешном возвращении этой функции получает текстовый ресурс. И pszOutBuf , и pszSource могут указывать на один и тот же буфер, в этом случае исходная строка будет перезаписана.
[in] cchOutBuf
Тип: UINT
Размер буфера, на который указывает pszOutBuf, в символах.
ppvReserved
Тип: void**
Не используется; задайте значение NULL.
Возвращаемое значение
Тип: HRESULT
Если эта функция выполняется успешно, она возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
Непрямая строка может быть представлена в нескольких формах, каждая из которых имеет собственную интерпретацию:
-
Имя файла и идентификатор ресурса "", синтаксис @filename, ресурс """
Строка извлекается из файла с именем , используя значение ресурса в качестве указателя. Если значение ресурса равно нулю или больше, число становится индексом строки в двоичном файле. Если число отрицательное, оно становится идентификатором ресурса. Полученная строка копируется в выходной буфер, а функция возвращает S_OK.
-
Имя файла и идентификатор ресурса с синтаксисом модификатора версии """ @filename,ресурс; v2 '''
Эту форму можно использовать при изменении ресурса, но по-прежнему использует тот же индекс или идентификатор, что и старый ресурс. Без модификатора версии кэш многоязыкового пользовательского интерфейса (MUI) не распознает, что ресурс изменился, и не будет обновляться. При добавлении модификатора версии значение рассматривается как новый ресурс и добавляется в кэш. Обратите внимание, что рекомендуется использовать новый идентификатор или индекс для нового ресурса и использовать модификатор версии только в том случае, если это невозможно.
-
Путь к файлу PRI и идентификатор ресурса ''' синтаксис @{PRIFilepath?resource} '''
Индекс ресурсов пакета (PRI) — это двоичный формат, представленный в Windows 8, который содержит индексированные ресурсы или ссылки на ресурсы. PRI-файл входит в пакет приложения. Дополнительные сведения о PRI-файлах см. в статье Создание и получение ресурсов в приложениях Магазина Windows.
Строка извлекается из PRI-файла с именем , используя ресурс в качестве указателя. Полученная строка копируется в выходной буфер, а функция возвращает S_OK. Строка извлекается на основе текущей среды оболочки или ResourceContext.
Ниже приведен пример непрямой строки этого типа.
@{C:\Program Files\WindowsApps\Microsoft.Camera_6.2.8376.0_x64__8wekyb3d8bbwe\resources.pri? ms-resource://Microsoft.Camera/resources/manifestAppDescription}
-
Имя пакета и идентификатор ресурса "", синтаксис @{PackageFullName?resource} "'"
Строка извлекается из файла Resources.pri, хранящегося в корневом каталоге приложения пакета, определенного packageFullName, используя ресурс в качестве указателя. Полученная строка копируется в выходной буфер, а функция возвращает S_OK. Строка извлекается на основе среды приложения или ResourceContext.
Примечание Эта строка должна ссылаться на пакет, установленный для текущего пользователя. В противном случае вызов завершится ошибкой.@{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}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | shlwapi.h |
Библиотека | Shlwapi.lib |
DLL | Shlwapi.dll (версия 5.5 или более поздняя) |