IFileOperation::CopyItem 方法 (shobjidl_core.h)
声明要复制到指定目标的单个项。
语法
HRESULT CopyItem(
[in] IShellItem *psiItem,
[in] IShellItem *psiDestinationFolder,
[in] LPCWSTR pszCopyName,
[in] IFileOperationProgressSink *pfopsItem
);
参数
[in] psiItem
类型: IShellItem*
指向指定源项的 IShellItem 的指针。
[in] psiDestinationFolder
类型: IShellItem*
指向 IShellItem 的指针,该 IShellItem 指定要包含项目副本的目标文件夹。
[in] pszCopyName
类型: LPCWSTR
指向复制后项的新名称的指针。 这是以 null 结尾的 Unicode 字符串,可以为 NULL。 如果 为 NULL,则目标项的名称与源相同。
[in] pfopsItem
类型: IFileOperationProgressSink*
指向 IFileOperationProgressSink 对象的指针,该对象用于此特定复制操作的进度状态和错误通知。 如果为整个操作调用 IFileOperation::Advise ,则会包含复制操作的进度状态和错误通知,因此请将此参数设置为 NULL。
返回值
类型: HRESULT
如果该方法成功,则返回 S_OK。 否则,将返回 HRESULT 错误代码。
注解
此方法不复制项,而只是声明要复制的项。 若要复制对象,必须至少进行此处详述的调用序列:
- 调用 IFileOperation::CopyItem 以声明源项、目标文件夹和目标名称。
- 调用 IFileOperation::P erformOperations 以开始复制操作。
示例
以下示例代码演示此方法的示例实现。
HRESULT CopyItem(__in PCWSTR pszSrcItem, __in PCWSTR pszDest, PCWSTR pszNewName)
{
//
// Initialize COM as STA.
//
HRESULT hr = CoInitializeEx(NULL, COINIT_APARTMENTTHREADED | COINIT_DISABLE_OLE1DDE);
if (SUCCEEDED(hr))
{
IFileOperation *pfo;
//
// Create the IFileOperation interface
//
hr = CoCreateInstance(CLSID_FileOperation,
NULL,
CLSCTX_ALL,
IID_PPV_ARGS(&pfo));
if (SUCCEEDED(hr))
{
//
// Set the operation flags. Turn off all UI from being shown to the
// user during the operation. This includes error, confirmation,
// and progress dialogs.
//
hr = pfo->SetOperationFlags(FOF_NO_UI);
if (SUCCEEDED(hr))
{
//
// Create an IShellItem from the supplied source path.
//
IShellItem *psiFrom = NULL;
hr = SHCreateItemFromParsingName(pszSrcItem,
NULL,
IID_PPV_ARGS(&psiFrom));
if (SUCCEEDED(hr))
{
IShellItem *psiTo = NULL;
if (NULL != pszDest)
{
//
// Create an IShellItem from the supplied
// destination path.
//
hr = SHCreateItemFromParsingName(pszDest,
NULL,
IID_PPV_ARGS(&psiTo));
}
if (SUCCEEDED(hr))
{
//
// Add the operation
//
hr = pfo->CopyItem(psiFrom, psiTo, pszNewName, NULL);
if (NULL != psiTo)
{
psiTo->Release();
}
}
psiFrom->Release();
}
if (SUCCEEDED(hr))
{
//
// Perform the operation to copy the file.
//
hr = pfo->PerformOperations();
}
}
//
// Release the IFileOperation interface.
//
pfo->Release();
}
CoUninitialize();
}
return hr;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 [仅限桌面应用] |
目标平台 | Windows |
标头 | shobjidl_core.h (包括 Shobjidl.h) |