Метод IShellLibrary::Save (shobjidl_core.h)
Сохраняет библиотеку в новый файл описания библиотеки (*.library-ms).
Синтаксис
HRESULT Save(
[in] IShellItem *psiFolderToSaveIn,
[in] LPCWSTR pszLibraryName,
[in] LIBRARYSAVEFLAGS lsf,
[out] IShellItem **ppsiSavedTo
);
Параметры
[in] psiFolderToSaveIn
Тип: IShellItem*
Объект IShellItem , указывающий папку, в которой нужно сохранить библиотеку, или значение NULL для сохранения библиотеки с библиотеками пользователя по умолчанию в FOLDERID_Libraries известной папке.
[in] pszLibraryName
Тип: LPCWSTR
Имя файла, под которым следует сохранить библиотеку. Имя файла не должно включать расширение имени файла; расширение имени файла добавляется автоматически.
[in] lsf
Тип: LIBRARYSAVEFLAGS
Значение LIBRARYSAVEFLAGS , указывающее способ обработки конфликта имен библиотеки.
[out] ppsiSavedTo
Тип: IShellItem**
Объект IShellItem , представляющий файл описания библиотеки, в который была сохранена библиотека.
Возвращаемое значение
Тип: HRESULT
Если этот метод завершается успешно, он возвращает S_OK. В противном случае возвращается код ошибки HRESULT .
Комментарии
IShellLibrary::Save и SHSaveLibraryInFolderPath создают файл библиотеки и сохраняют его на диск. Чтобы сохранить изменения, внесенные в библиотеку с существующим файлом библиотеки, вызовите IShellLibrary::Commit.
Если библиотека сохраняется в известной папке Библиотеки (FOLDERID_Libraries), расположение библиотеки автоматически добавляется в системный индекс.
Для удобства вместо этого метода можно использовать SHSaveLibraryInFolderPath .
Примеры
В следующем примере кода показана вспомогающая функция SHSaveLibraryInFolderPath, которая служит оболочкой для этого метода.
//
// from shobjidl.h
//
__inline HRESULT SHSaveLibraryInFolderPath(
__in IShellLibrary *plib,
__in PCWSTR pszFolderPath,
__in PCWSTR pszLibraryName,
__in LIBRARYSAVEFLAGS lsf,
__deref_opt_out PWSTR *ppszSavedToPath
)
{
if (ppszSavedToPath)
{
*ppszSavedToPath = NULL;
}
IShellItem *psiFolder;
HRESULT hr = SHCreateItemFromParsingName(
pszFolderPath,
NULL,
IID_PPV_ARGS(&psiFolder));
if (SUCCEEDED(hr))
{
IShellItem *psiSavedTo;
hr = plib->Save(psiFolder, pszLibraryName, lsf, &psiSavedTo);
if (SUCCEEDED(hr))
{
if (ppszSavedToPath)
{
hr = psiSavedTo->GetDisplayName(
SIGDN_DESKTOPABSOLUTEPARSING,
ppszSavedToPath);
}
psiSavedTo->Release();
}
psiFolder->Release();
}
return hr;
}
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | shobjidl_core.h (включая Shobjidl.h) |