Partager via


IFileOperation ::CopyItem, méthode (shobjidl_core.h)

Déclare un élément unique qui doit être copié dans une destination spécifiée.

Syntaxe

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

Paramètres

[in] psiItem

Type : IShellItem*

Pointeur vers un objet IShellItem qui spécifie l’élément source.

[in] psiDestinationFolder

Type : IShellItem*

Pointeur vers un objet IShellItem qui spécifie le dossier de destination à contenir la copie de l’élément.

[in] pszCopyName

Type : LPCWSTR

Pointeur vers un nouveau nom pour l’élément après sa copie. Il s’agit d’une chaîne Unicode terminée par null et peut avoir la valeur NULL. Si la valeur est NULL, le nom de l’élément de destination est identique à celui de la source.

[in] pfopsItem

Type : IFileOperationProgressSink*

Pointeur vers un objet IFileOperationProgressSink à utiliser pour la progression status et les notifications d’erreur pour cette opération de copie spécifique. Si vous appelez IFileOperation ::Advise pour l’opération globale, la progression status et les notifications d’erreur pour l’opération de copie y sont incluses, alors définissez ce paramètre sur NULL.

Valeur retournée

Type : HRESULT

Si cette méthode réussit, elle retourne S_OK. Sinon, elle retourne un code d’erreur HRESULT.

Remarques

Cette méthode ne copie pas l’élément, elle déclare simplement l’élément à copier. Pour copier un objet, vous devez effectuer au moins la séquence d’appels détaillée ici :

  1. Appelez IFileOperation ::CopyItem pour déclarer l’élément source, le dossier de destination et le nom de destination.
  2. Appelez IFileOperation ::P erformOperations pour commencer l’opération de copie.

Exemples

L’exemple de code suivant montre un exemple d’implémentation de cette méthode.

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

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows Vista [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2008 [applications de bureau uniquement]
Plateforme cible Windows
En-tête shobjidl_core.h (inclure Shobjidl.h)

Voir aussi

IFileOperation

IFileOperation ::CopyItems

PostCopyItem

PreCopyItem