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:
- Chiamare IFileOperation::CopyItem per dichiarare l'elemento di origine, la cartella di destinazione e il nome di destinazione.
- 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) |