IFileOperation インターフェイス (shobjidl_core.h)

シェル項目のコピー、移動、名前変更、作成、削除を行うメソッドと、進行状況とエラー ダイアログを提供するメソッドを公開します。 このインターフェイスは 、SHFileOperation 関数を置き換えます。

継承

IFileOperation インターフェイスは、IUnknown インターフェイスから継承されます。 IFileOperation には、次の種類のメンバーもあります。

メソッド

IFileOperation インターフェイスには、これらのメソッドがあります。

 
IFileOperation::Advise

ハンドラーがすべての操作の状態とエラー情報を提供できるようにします。
IFileOperation::ApplyPropertiesToItem

プロパティ値を設定する 1 つの項目を宣言します。
IFileOperation::ApplyPropertiesToItems

共通のプロパティ値のセットを適用する項目のセットを宣言します。
IFileOperation::CopyItem

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

指定したコピー先にコピーする項目のセットを宣言します。
IFileOperation::D eleteItem

削除する 1 つの項目を宣言します。
IFileOperation::D eleteItems

削除するアイテムのセットを宣言します。
IFileOperation::GetAnyOperationsAborted

IFileOperation::P erformOperations の呼び出しによって開始されたファイル操作が完了前に停止されたかどうかを示す値を取得します。 操作は、ユーザーアクションによって停止することも、システムによってサイレントに停止することもできます。
IFileOperation::MoveItem

指定した宛先に移動する 1 つの項目を宣言します。
IFileOperation::MoveItems

指定した宛先に移動する項目のセットを宣言します。
IFileOperation::NewItem

指定した場所に作成される新しい項目を宣言します。
IFileOperation::P erformOperations

選択したすべての操作を実行します。
IFileOperation::RenameItem

新しい表示名を指定する 1 つの項目を宣言します。
IFileOperation::RenameItems

新しい表示名を指定する項目のセットを宣言します。 すべての項目に同じ名前が付けられます。
IFileOperation::SetOperationFlags

現在の操作のパラメーターを設定します。
IFileOperation::SetOwnerWindow

進行状況ウィンドウとダイアログ ウィンドウの親ウィンドウまたは所有者ウィンドウを設定します。
IFileOperation::SetProgressDialog

操作の進行状況を表示するために使用するダイアログ ボックスを指定します。
IFileOperation::SetProgressMessage

実装されていません。 (IFileOperation.SetProgressMessage)
IFileOperation::SetProperties

アイテムまたはアイテムに設定するプロパティと値のセットを宣言します。
IFileOperation::Unadvise

以前に IFileOperation::Advise によって確立されたアドバイザリ接続を終了します。

注釈

シェル項目には、ファイルやフォルダーなどのファイル システム オブジェクトだけでなく、仮想オブジェクトも含め、名前空間内の任意のオブジェクトを指定できます。 IFileOperation メソッドのトピックでは、"item" という用語を使用して、名前空間オブジェクトを一般的に参照します。

IFileOperation には、以前の SHFileOperation 関数よりも多くの利点があります。

  • IShellItem を使用して、文字列パスではなく項目を識別します。 SHFileOperation では、文字列内の複数のパスを区切るためにそれ自体が使用された標準の 1 つの null 文字ではなく、2 つの null 文字で終了するパスと宛先文字列が必要でした。 IShellItem を使用して項目を識別すると、より堅牢になり、プログラミング エラーが発生しにくくなります。 また、仮想フォルダーなどのファイル システム以外の項目にアクセスすることもできます。 1 つの操作内の複数の項目を、 IShellItemArrayIDataObject、または IEnumShellItems を介してアクセスされるコレクションとして、文字列として渡すことができます。
  • FORMATMessage などの API と組み合わせて、HRESULT 値を使用したより正確なエラー報告。 SHFileOperation からのリターン コードは、誤解を招いたり、不正確になる可能性があります。
  • 拡張性。 コンポーネント オブジェクト モデル (COM) インターフェイスとして、 IFileOperation は特定のニーズを満たすためにサード パーティによって機能を拡張できますが、これは非常にまれなケースです。 Windows には、ほとんどのユーザーのニーズを満たす必要がある IFileOperation の既定の実装が用意されています。
  • より良い進行状況のフィードバック。 個々のアイテムに対して特定の操作が開始および終了した場合の通知や全体的な進行状況など、操作の詳細な進行状況は、操作中に受信できます。 SHFileOperation は進行状況 UI を提供していましたが、詳細ではありません。
  • その他の機能。 SHFileOperation によって提供されるコピー、削除、移動、名前変更の機能に加えて、IFileOperation を使用すると、プロパティ値を適用し、新しい項目を作成できます。
  • 操作をより詳細に制御できます。 SHFileOperation によって認識される操作フラグに加えて、拡張操作オプションを指定する新しいフラグが IFileOperation::SetOperationFlags で認識されます。
  • 1 回の呼び出しで異なる操作を実行できます。 たとえば、一連のファイルを移動したり、他のファイルをコピーしたり、フォルダーの名前を変更したり、プロパティを別のアイテムに適用したりできます。 SHFileOperation では、一度に 1 つの操作 (コピー、移動、名前変更、または削除) しか実行できませんでした。
このインターフェイスを使用してファイル操作を実行するには、一連の呼び出しを行う必要があります。
  1. 省略可能。 [アドバイス] と [Unadvise] を使用して、進行状況とエラー通知のイベント シンクを設定します。
  2. 必要に応じて、次の操作状態を設定します。
  3. 必要に応じて、以下を使用して、どの項目に対してどの操作を実行するかを指定します。
  4. PerformOperations を呼び出して操作を実行する
IFileOperation は、シングルスレッド アパートメント (STA) の状況でのみ適用できます。 マルチスレッド アパートメント (MTA) の状況では使用できません。 MTA の場合でも、 SHFileOperation を使用する必要があります。

IFileOperation の拡張機能を示す完全なサンプルは、Windows ソフトウェア開発キット (Windows SDK) (SDK) に含まれています。 既定のインストールでは、%ProgramFiles%\Microsoft SDK\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\FileOperations にあります。

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー shobjidl_core.h (Shobjidl.h を含む)