共用方式為


IFileOperation::CopyItem 方法 (shobjidl_core.h)

宣告要複製到指定目的地的單一專案。

語法

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

參數

[in] psiItem

類型: IShellItem*

指定來源專案的 IShellItem 指標。

[in] psiDestinationFolder

類型: IShellItem*

IShellItem 的指標,指定要包含項目複本的目的地資料夾。

[in] pszCopyName

類型: LPCWSTR

複製項目之後,該專案的新名稱指標。 這是以 Null 結尾的 Unicode 字串,可以是 NULL。 如果 為 NULL,則目的地專案的名稱與來源相同。

[in] pfopsItem

類型: IFileOperationProgressSink*

IFileOperationProgressSink 物件的指標,用於此特定複製作業的進度狀態和錯誤通知。 如果您針對整體作業呼叫 IFileOperation::建議 ,複製作業的進度狀態和錯誤通知會包含在該處,因此請將此參數設定為 NULL

傳回值

類型: HRESULT

如果此方法成功,則會傳回 S_OK。 否則,它會傳回 HRESULT 錯誤碼。

備註

這個方法不會複製專案,它只會宣告要複製的專案。 若要複製物件,您必須至少進行此處詳述的呼叫順序:

  1. 呼叫 IFileOperation::CopyItem 來宣告來源專案、目的地資料夾和目的地名稱。
  2. 呼叫 IFileOperation::P erformOperations 開始複製作業。

範例

下列範例程式代碼示範這個方法的範例實作。

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

規格需求

需求
最低支援的用戶端 Windows Vista [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 [僅限傳統型應用程式]
目標平台 Windows
標頭 shobjidl_core.h (包括 Shobjidl.h)

另請參閱

IFileOperation

IFileOperation::CopyItems

PostCopyItem

PreCopyItem