Поделиться через


Интерфейс IFileOperation (shobjidl_core.h)

Предоставляет методы для копирования, перемещения, переименования, создания и удаления элементов оболочки, а также методы для предоставления диалоговых окон хода выполнения и ошибок. Этот интерфейс заменяет функцию SHFileOperation .

Наследование

Интерфейс IFileOperation наследуется от интерфейса IUnknown . IFileOperation также имеет следующие типы элементов:

Методы

Интерфейс IFileOperation содержит следующие методы.

 
IFileOperation::Совет

Позволяет обработчику предоставлять сведения о состоянии и ошибках для всех операций.
IFileOperation::ApplyPropertiesToItem

Объявляет один элемент, для которого необходимо задать значения свойств.
IFileOperation::ApplyPropertiesToItems

Объявляет набор элементов, к которым применяется общий набор значений свойств.
IFileOperation::CopyItem

Объявляет один элемент, который должен быть скопирован в указанное место назначения.
IFileOperation::CopyItems

Объявляет набор элементов, которые должны быть скопированы в указанное место назначения.
IFileOperation::D eleteItem

Объявляет один удаляемый элемент.
IFileOperation::D eleteItems

Объявляет набор удаляемых элементов.
IFileOperation::GetAnyOperationsAborted

Возвращает значение, указывающее, были ли остановлены какие-либо операции с файлами, инициированные вызовом метода IFileOperation::P erformOperations до их завершения. Операции могут быть остановлены либо действием пользователя, либо автоматически системой.
IFileOperation::MoveItem

Объявляет один элемент, который должен быть перемещен в указанное место назначения.
IFileOperation::MoveItems

Объявляет набор элементов, которые должны быть перемещены в указанное место назначения.
IFileOperation::NewItem

Объявляет новый элемент, который должен быть создан в указанном расположении.
IFileOperation::P erformOperations

Выполняет все выбранные операции.
IFileOperation::RenameItem

Объявляет один элемент, которому должно быть присвоено новое отображаемое имя.
IFileOperation::RenameItems

Объявляет набор элементов, которым должно быть присвоено новое отображаемое имя. Всем элементам присваиваются одинаковые имена.
IFileOperation::SetOperationFlags

Задает параметры для текущей операции.
IFileOperation::SetOwnerWindow

Задает родительское окно или окно владельца для хода выполнения и диалоговых окон.
IFileOperation::SetProgressDialog

Задает диалоговое окно, используемое для отображения хода выполнения операции.
IFileOperation::SetProgressMessage

Не реализован. (IFileOperation.SetProgressMessage)
IFileOperation::SetProperties

Объявляет набор свойств и значений, которые необходимо задать для элемента или элементов.
IFileOperation::Unadvise

Завершает консультативное подключение, ранее установленное с помощью IFileOperation::Advisory.

Комментарии

Элемент оболочки может быть любым объектом в пространстве имен, включая объекты файловой системы, такие как файлы и папки, а также виртуальные объекты. В разделах о методах IFileOperation термин "item" используется для универсальной ссылки на любой объект пространства имен.

IFileOperation предлагает множество преимуществ по сравнению с более старой функцией SHFileOperation .

  • Использование IShellItem для идентификации элементов, а не строковых путей. ShFileOperation требует, чтобы строки пути и назначения заканчивались двумя символами NULL, а не стандартным одним символом NULL, который сам использовался для разделения нескольких путей в строке. Идентификация элемента с помощью IShellItem является более надежной и менее подверженной ошибкам программирования. Он также позволяет получать доступ к элементам, не относящихся к файловой системе, например к виртуальным папкам. Несколько элементов в одной операции можно передать как IShellItemArray, IDataObject или коллекцию, доступ к ней через IEnumShellItems , а не в виде строки.
  • Более точные отчеты об ошибках с помощью значений HRESULT в сочетании с API, например FormatMessage. Коды возврата из SHFileOperation могут вводить в заблуждение или неточными.
  • Расширяемость. В качестве интерфейса com-модели IFileOperation может расширить свои возможности сторонними разработчиками в соответствии с конкретными потребностями, хотя это может быть очень редким случаем. Windows предоставляет реализацию IFileOperation по умолчанию, которая должна соответствовать потребностям большинства пользователей.
  • Улучшенная обратная связь о ходе выполнения. Во время операции можно получить подробные сведения о ходе выполнения операции, включая уведомления о начале и завершении определенных операций с отдельными элементами, а также общий ход выполнения. Хотя SHFileOperation предоставлял пользовательский интерфейс хода выполнения, он не был таким подробным.
  • Дополнительные функциональные возможности. Помимо функций копирования, удаления, перемещения и переименования, предоставляемых SHFileOperation, IFileOperation позволяет применять значения свойств и создавать новые элементы.
  • Дополнительный контроль над операцией. Помимо флагов операций, распознаваемых SHFileOperation, в IFileOperation::SetOperationFlags распознаются новые флаги, указывающие параметры расширенных операций.
  • В одном вызове можно выполнять различные операции. Например, вы можете переместить набор файлов, скопировать другие файлы, переименовать папку и применить свойства к еще одному элементу в одной операции. SHFileOperation может выполнять только одну операцию — копировать, перемещать, переименовывать или удалять — одновременно.
Для выполнения операции с файлом с помощью этого интерфейса необходимо выполнить последовательность вызовов.
  1. Необязательный элемент. Настройте приемник событий для уведомлений о состоянии выполнения и ошибках с помощью рекомендаций и отмены.
  2. При необходимости задайте состояние операции, используя следующее:
  3. Укажите, какие операции следует выполнять с элементами, используя при необходимости следующее.
  4. Выполнение операций путем вызова PerformOperations
IFileOperation можно применить только в ситуации однопотокового подразделения (STA). Его нельзя использовать для многопоточных квартир (MTA). Для MTA по-прежнему необходимо использовать SHFileOperation.

Полный пример, демонстрирующий расширение IFileOperation, включен в пакет средств разработки программного обеспечения для Windows (SDK). В установке по умолчанию его можно найти в папке %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\FileOperations.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header shobjidl_core.h (включая Shobjidl.h)