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 :
- Appelez IFileOperation ::CopyItem pour déclarer l’élément source, le dossier de destination et le nom de destination.
- 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) |