Bagikan melalui


Metode IFileOperation::CopyItem (shobjidl_core.h)

Menyatakan satu item yang akan disalin ke tujuan tertentu.

Sintaks

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

Parameter

[in] psiItem

Jenis: IShellItem*

Penunjuk ke IShellItem yang menentukan item sumber.

[in] psiDestinationFolder

Jenis: IShellItem*

Penunjuk ke IShellItem yang menentukan folder tujuan untuk berisi salinan item.

[in] pszCopyName

Jenis: LPCWSTR

Arahkan ke nama baru untuk item setelah disalin. Ini adalah untai (karakter) Unicode yang dihentikan null dan dapat berupa NULL. Jika NULL, nama item tujuan sama dengan sumbernya.

[in] pfopsItem

Jenis: IFileOperationProgressSink*

Arahkan ke objek IFileOperationProgressSink yang akan digunakan untuk status kemajuan dan pemberitahuan kesalahan untuk operasi penyalinan khusus ini. Jika Anda memanggil IFileOperation::Advise untuk operasi keseluruhan, status kemajuan dan pemberitahuan kesalahan untuk operasi salin disertakan di sana, jadi atur parameter ini ke NULL.

Mengembalikan nilai

Jenis: HRESULT

Jika metode ini berhasil, metode akan mengembalikan S_OK. Jika tidak, kode kesalahan HRESULT akan dikembalikan.

Keterangan

Metode ini tidak menyalin item, hanya menyatakan item yang akan disalin. Untuk menyalin objek, Anda harus membuat setidaknya urutan panggilan yang dirinci di sini:

  1. Panggil IFileOperation::CopyItem untuk mendeklarasikan item sumber, folder tujuan, dan nama tujuan.
  2. Panggil IFileOperation::P erformOperations untuk memulai operasi penyalinan.

Contoh

Contoh kode berikut menunjukkan contoh implementasi metode ini.

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

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows Vista [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2008 [hanya aplikasi desktop]
Target Platform Windows
Header shobjidl_core.h (termasuk Shobjidl.h)

Lihat juga

IFileOperation

IFileOperation::CopyItems

PostCopyItem

PreCopyItem