Compartir a través de


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í:

  1. Llame a IFileOperation::CopyItem para declarar el elemento de origen, la carpeta de destino y el nombre de destino.
  2. 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)

Consulte también

IFileOperation

IFileOperation::CopyItems

PostCopyItem

PreCopyItem