Interface IFileOperation (shobjidl_core.h)

Expõe métodos para copiar, mover, renomear, criar e excluir itens do Shell, bem como métodos para fornecer diálogos de progresso e erro. Essa interface substitui a função SHFileOperation .

Herança

A interface IFileOperation herda da interface IUnknown . IFileOperation também tem estes tipos de membros:

Métodos

A interface IFileOperation tem esses métodos.

 
IFileOperation::Advise

Permite que um manipulador forneça status e informações de erro para todas as operações.
IFileOperation::ApplyPropertiesToItem

Declara um único item cujos valores de propriedade devem ser definidos.
IFileOperation::ApplyPropertiesToItems

Declara um conjunto de itens para os quais aplicar um conjunto comum de valores de propriedade.
IFileOperation::CopyItem

Declara um único item que deve ser copiado para um destino especificado.
IFileOperation::CopyItems

Declara um conjunto de itens que devem ser copiados para um destino especificado.
IFileOperation::D eleteItem

Declara um único item que deve ser excluído.
IFileOperation::D eleteItems

Declara um conjunto de itens que devem ser excluídos.
IFileOperation::GetAnyOperationsAborted

Obtém um valor que indica se todas as operações de arquivo iniciadas por uma chamada para IFileOperation::P erformOperations foram interrompidas antes de serem concluídas. As operações podem ser interrompidas pela ação do usuário ou silenciosamente pelo sistema.
IFileOperation::MoveItem

Declara um único item que deve ser movido para um destino especificado.
IFileOperation::MoveItems

Declara um conjunto de itens que devem ser movidos para um destino especificado.
IFileOperation::NewItem

Declara um novo item que deve ser criado em um local especificado.
IFileOperation::P erformOperations

Executa todas as operações selecionadas.
IFileOperation::RenameItem

Declara um único item que deve receber um novo nome de exibição.
IFileOperation::RenameItems

Declara um conjunto de itens que devem receber um novo nome de exibição. Todos os itens recebem o mesmo nome.
IFileOperation::SetOperationFlags

Define parâmetros para a operação atual.
IFileOperation::SetOwnerWindow

Define a janela pai ou proprietário para o progresso e as janelas de diálogo.
IFileOperation::SetProgressDialog

Especifica uma caixa de diálogo usada para exibir o progresso da operação.
IFileOperation::SetProgressMessage

Não implementado. (IFileOperation.SetProgressMessage)
IFileOperation::SetProperties

Declara um conjunto de propriedades e valores a serem definidos em um item ou itens.
IFileOperation::Unadvise

Encerra uma conexão de consultoria estabelecida anteriormente por meio de IFileOperation::Advise.

Comentários

Um item shell pode ser qualquer objeto no namespace, incluindo objetos do sistema de arquivos, como arquivos e pastas, mas também objetos virtuais. Nos tópicos do método IFileOperation , o termo "item" é usado para se referir genericamente a qualquer objeto de namespace.

IFileOperation oferece muitas vantagens em relação à função SHFileOperation mais antiga.

  • Uso de IShellItem para identificar itens em vez de caminhos de cadeia de caracteres. SHFileOperation exigiu que o caminho e as cadeias de caracteres de destino terminassem em dois caracteres nulos em vez do caractere nulo único padrão, que foi usado para delimitar vários caminhos na cadeia de caracteres. Identificar um item por meio de IShellItem é mais robusto e menos propenso a erros de programação. Ele também permite que você acesse itens do sistema que não são de arquivos, como pastas virtuais. Vários itens em uma operação podem ser passados como um IShellItemArray, IDataObject ou uma coleção acessada por meio de IEnumShellItems em vez de como uma cadeia de caracteres.
  • Relatórios de erros mais precisos por meio de valores HRESULT em conjunto com uma API como FormatMessage. Códigos de retorno de SHFileOperation podem ser enganosos ou imprecisos.
  • Extensibilidade. Como uma interface COM (Component Object Model), iFileOperation pode ter seus recursos estendidos por terceiros para atender às suas necessidades específicas, embora esse deva ser um caso muito raro. O Windows fornece uma implementação padrão de IFileOperation que deve atender às necessidades da maioria dos usuários.
  • Melhores comentários de progresso. O progresso detalhado da operação, incluindo notificações quando operações específicas começam e terminam em itens individuais, bem como o progresso geral, pode ser recebido durante a operação. Embora SHFileOperation tenha fornecido a interface do usuário de progresso, ela não foi tão detalhada.
  • Mais funcionalidade. Além da funcionalidade de copiar, excluir, mover e renomear fornecida por SHFileOperation, iFileOperation permite aplicar valores de propriedade e criar novos itens.
  • Mais controle sobre a operação. Além dos sinalizadores de operação reconhecidos por SHFileOperation, novos sinalizadores são reconhecidos em IFileOperation::SetOperationFlags que especificam opções de operação estendidas.
  • Operações diferentes podem ser executadas em uma chamada. Por exemplo, você pode mover um conjunto de arquivos, copiar outros, renomear uma pasta e aplicar propriedades a outro item em uma única operação. SHFileOperation só poderia executar uma operação — copiar, mover, renomear ou excluir — por vez.
Para realizar uma operação de arquivo usando essa interface, uma sequência de chamadas deve ser feita.
  1. Opcional. Configure o coletor de eventos para status de progresso e notificações de erro por meio de Aviso e Não Aviso.
  2. Defina o estado da operação usando o seguinte, conforme necessário:
  3. Especifique quais operações executar em quais itens usar o seguinte, conforme necessário.
  4. Executar as operações chamando PerformOperations
IFileOperation só pode ser aplicado em uma situação de STA (apartamento de thread único). Ele não pode ser usado para uma situação de MTA (multithreaded apartment). Para mta, você ainda deve usar SHFileOperation.

Um exemplo completo que demonstra a extensão de IFileOperation está incluído no SDK (Software Development Kit do Windows (SDK do Windows)). Em uma instalação padrão, ele pode ser encontrado em %ProgramFiles%\Microsoft SDKs\Windows\v6.0\Samples\WinUI\Shell\AppPlatform\FileOperations.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho shobjidl_core.h (inclua Shobjidl.h)