Метод 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 , указывающий папку назначения, в которую будет входить копия элемента.
[in] pszCopyName
Тип: LPCWSTR
Указатель на новое имя элемента после его копирования. Это строка Юникода с завершением NULL и может иметь значение 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 |
Header | shobjidl_core.h (включая Shobjidl.h) |