Método IFileOperation::CopyItem (shobjidl_core.h)
Declara un único elemento que se va a copiar en un destino especificado.
Sintaxis
HRESULT CopyItem(
[in] IShellItem *psiItem,
[in] IShellItem *psiDestinationFolder,
[in] LPCWSTR pszCopyName,
[in] IFileOperationProgressSink *pfopsItem
);
Parámetros
[in] psiItem
Tipo: IShellItem*
Puntero a un objeto IShellItem que especifica el elemento de origen.
[in] psiDestinationFolder
Tipo: IShellItem*
Puntero a un objeto IShellItem que especifica la carpeta de destino que contendrá la copia del elemento.
[in] pszCopyName
Tipo: LPCWSTR
Puntero a un nuevo nombre para el elemento después de copiarlo. Se trata de una cadena Unicode terminada en NULL y puede ser NULL. Si es NULL, el nombre del elemento de destino es el mismo que el origen.
[in] pfopsItem
Tipo: IFileOperationProgressSink*
Puntero a un objeto IFileOperationProgressSink que se usará para el estado de progreso y las notificaciones de error para esta operación de copia específica. Si llama a IFileOperation::Advise para la operación general, el estado del progreso y las notificaciones de error de la operación de copia se incluyen allí, por lo que establezca este parámetro en NULL.
Valor devuelto
Tipo: HRESULT
Si este método se realiza correctamente, devuelve S_OK. De lo contrario, devuelve un código de error de HRESULT.
Comentarios
Este método no copia el elemento, simplemente declara el elemento que se va a copiar. Para copiar un objeto, debe realizar al menos la secuencia de llamadas que se detallan aquí:
- Llame a IFileOperation::CopyItem para declarar el elemento de origen, la carpeta de destino y el nombre de destino.
- Llame a IFileOperation::P erformOperations para iniciar la operación de copia.
Ejemplos
En el código de ejemplo siguiente se muestra una implementación de ejemplo de este método.
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;
}
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2008 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | shobjidl_core.h (incluya Shobjidl.h) |