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 |
ヘッダー | shobjidl_core.h (Shobjidl.h を含む) |