Freigeben über


IFileOperation::CopyItem-Methode (shobjidl_core.h)

Deklariert ein einzelnes Element, das in ein angegebenes Ziel kopiert werden soll.

Syntax

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

Parameter

[in] psiItem

Typ: IShellItem*

Zeiger auf ein IShellItem,das das Quellelement angibt.

[in] psiDestinationFolder

Typ: IShellItem*

Zeiger auf ein IShellItem,das den Zielordner angibt, der die Kopie des Elements enthalten soll.

[in] pszCopyName

Typ: LPCWSTR

Zeiger auf einen neuen Namen für das Element, nachdem es kopiert wurde. Dies ist eine mit NULL beendete Unicode-Zeichenfolge und kann NULL sein. Bei NULL ist der Name des Zielelements identisch mit der Quelle.

[in] pfopsItem

Typ: IFileOperationProgressSink*

Zeiger auf ein IFileOperationProgressSink-Objekt, das für den Status status und Fehlerbenachrichtigungen für diesen spezifischen Kopiervorgang verwendet werden soll. Wenn Sie IFileOperation::Advise für den Gesamtvorgang aufrufen, sind dort fortschritts- status und Fehlerbenachrichtigungen für den Kopiervorgang enthalten. Legen Sie daher diesen Parameter auf NULL fest.

Rückgabewert

Typ: HRESULT

Wenn diese Methode erfolgreich ist, wird S_OK zurückgegeben. Andernfalls wird ein Fehlercode HRESULT zurückgegeben.

Hinweise

Diese Methode kopiert das Element nicht, sondern deklariert lediglich das zu kopierende Element. Um ein Objekt zu kopieren, müssen Sie mindestens die hier beschriebene Reihenfolge der Aufrufe ausführen:

  1. Rufen Sie IFileOperation::CopyItem auf, um das Quellelement, den Zielordner und den Zielnamen zu deklarieren.
  2. Rufen Sie IFileOperation::P erformOperations auf , um den Kopiervorgang zu starten.

Beispiele

Der folgende Beispielcode zeigt eine Beispielimplementierung dieser Methode.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2008 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile shobjidl_core.h (einschließlich Shobjidl.h)

Weitere Informationen

IFileOperation

IFileOperation::CopyItems

PostCopyItem

PreCopyItem