Share via


IFileOperation::CopyItem メソッド (shobjidl_core.h)

指定したコピー先にコピーする 1 つの項目を宣言します。

構文

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::Advise を呼び出すと、コピー操作の進行状況とエラー通知がそこに含まれるため、このパラメーターを 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