Condividi tramite


Metodo IFileOperation::CopyItem (shobjidl_core.h)

Dichiara un singolo elemento da copiare in una destinazione specificata.

Sintassi

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

Parametri

[in] psiItem

Tipo: IShellItem*

Puntatore a un oggetto IShellItem che specifica l'elemento di origine.

[in] psiDestinationFolder

Tipo: IShellItem*

Puntatore a un oggetto IShellItem che specifica la cartella di destinazione in cui contenere la copia dell'elemento.

[in] pszCopyName

Tipo: LPCWSTR

Puntatore a un nuovo nome per l'elemento dopo la copia. Si tratta di una stringa Unicode con terminazione Null e può essere NULL. Se NULL, il nome dell'elemento di destinazione corrisponde all'origine.

[in] pfopsItem

Tipo: IFileOperationProgressSink*

Puntatore a un oggetto IFileOperationProgressSink da usare per lo stato di avanzamento e le notifiche di errore per questa specifica operazione di copia. Se si chiama IFileOperation::Advise per l'operazione complessiva, sono incluse le notifiche relative allo stato di avanzamento e agli errori per l'operazione di copia, quindi impostare questo parametro su NULL.

Valore restituito

Tipo: HRESULT

Se questo metodo ha esito positivo, restituisce S_OK. In caso contrario, restituisce un codice di errore HRESULT .

Commenti

Questo metodo non copia l'elemento, ma dichiara semplicemente l'elemento da copiare. Per copiare un oggetto, è necessario effettuare almeno la sequenza di chiamate descritte di seguito:

  1. Chiamare IFileOperation::CopyItem per dichiarare l'elemento di origine, la cartella di destinazione e il nome di destinazione.
  2. Chiamare IFileOperation::P erformOperations per avviare l'operazione di copia.

Esempio

Il codice di esempio seguente mostra un'implementazione di esempio di questo metodo.

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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista [solo app desktop]
Server minimo supportato Windows Server 2008 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione shobjidl_core.h (include Shobjidl.h)

Vedi anche

IFileOperation

IFileOperation::CopyItems

PostCopyItem

PreCopyItem