Интерфейс 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 может выполнять только одну операцию — копировать, перемещать, переименовывать или удалять — одновременно.
- Необязательный элемент. Настройте приемник событий для уведомлений о состоянии выполнения и ошибках с помощью рекомендаций и отмены.
- При необходимости задайте состояние операции, используя следующее:
- Укажите, какие операции следует выполнять с элементами, используя при необходимости следующее.
- Выполнение операций путем вызова PerformOperations
Полный пример, демонстрирующий расширение 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) |