Compartilhar via


Método IFileOperation::CopyItem (shobjidl_core.h)

Declara um único item que deve ser copiado para um destino especificado.

Sintaxe

HRESULT CopyItem(
  [in] IShellItem                 *psiItem,
  [in] IShellItem                 *psiDestinationFolder,
  [in] LPCWSTR                    pszCopyName,
  [in] IFileOperationProgressSink *pfopsItem
);

Parâmetros

[in] psiItem

Tipo: IShellItem*

Ponteiro para um IShellItem que especifica o item de origem.

[in] psiDestinationFolder

Tipo: IShellItem*

Ponteiro para um IShellItem que especifica a pasta de destino para conter a cópia do item.

[in] pszCopyName

Tipo: LPCWSTR

Ponteiro para um novo nome para o item depois que ele tiver sido copiado. Essa é uma cadeia de caracteres Unicode terminada em nulo e pode ser NULL. Se FOR NULL, o nome do item de destino será o mesmo que a origem.

[in] pfopsItem

Tipo: IFileOperationProgressSink*

Ponteiro para um objeto IFileOperationProgressSink a ser usado para status de progresso e notificações de erro para essa operação de cópia específica. Se você chamar IFileOperation::Advise para a operação geral, as status de progresso e as notificações de erro para a operação de cópia serão incluídas lá, portanto, defina esse parâmetro como NULL.

Retornar valor

Tipo: HRESULT

Se o método for bem-sucedido, ele retornará S_OK. Caso contrário, ele retornará um código de erro HRESULT.

Comentários

Esse método não copia o item, apenas declara o item a ser copiado. Para copiar um objeto, você deve fazer pelo menos a sequência de chamadas detalhada aqui:

  1. Chame IFileOperation::CopyItem para declarar o item de origem, a pasta de destino e o nome do destino.
  2. Chame IFileOperation::P erformOperations para iniciar a operação de cópia.

Exemplos

O código de exemplo a seguir mostra uma implementação de exemplo desse 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 Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shobjidl_core.h (inclua Shobjidl.h)

Confira também

Ifileoperation

IFileOperation::CopyItems

PostCopyItem

PreCopyItem