Trabalhando com extensões do Shell

Os recursos do Shell podem ser estendidos com entradas do Registro e arquivos .ini. Embora essa abordagem para estender o Shell seja simples e adequada para muitas finalidades, ela é limitada. Por exemplo, se você usar o Registro para especificar um ícone personalizado para um tipo de arquivo, o mesmo ícone aparecerá para cada arquivo desse tipo. Estender o Shell com o registro não permite que você varie o ícone para diferentes membros do tipo de arquivo. Outros aspectos do Shell, como a folha de propriedades Propriedades que pode ser exibida quando um arquivo é clicado com o botão direito do mouse, não podem ser modificados com o registro.

Uma abordagem mais poderosa e flexível para estender o Shell é implementar manipuladores de extensão de shell. Esses manipuladores podem ser implementados para uma variedade de ações que o Shell pode executar. Antes de executar a ação, o Shell consulta o manipulador de extensão, dando a ele a oportunidade de modificar a ação. Um exemplo comum é um manipulador de extensão de menu de atalho. Se um for implementado para um tipo de arquivo, ele será consultado sempre que um dos arquivos for clicado com o botão direito do mouse. Em seguida, o manipulador pode especificar itens de menu adicionais em uma base arquivo a arquivo, em vez de ter o mesmo conjunto para todos os arquivos desse tipo de arquivo.

Esse conjunto de tópicos discute como implementar os manipuladores de extensão que permitem modificar uma variedade de ações do Shell. Os manipuladores a seguir são associados a um tipo de arquivo específico e permitem que você especifique em uma base arquivo a arquivo.

Manipulador Descrição
Manipulador de menu de atalho Chamado antes que o menu de atalho de um arquivo seja exibido. Ele permite que você adicione itens ao menu de atalho em uma base arquivo a arquivo.
Manipulador de dados Chamado quando uma operação de arrastar e soltar é executada em objetos Shell. Ele permite que você forneça formatos de área de transferência adicionais para o destino de soltar.
Manipulador de soltar Chamado quando um objeto de dados é arrastado ou descartado em um arquivo. Ele permite que você transforme um arquivo em um destino de soltar.
Manipulador de ícones Chamado antes que o ícone de um arquivo seja exibido. Ele permite que você substitua o ícone padrão do arquivo por um ícone personalizado em uma base arquivo a arquivo.
Manipulador de folha de propriedades Chamado antes que a folha de propriedades propriedades de um objeto seja exibida. Ele permite que você adicione ou substitua páginas.
Manipulador de imagem em miniatura Fornece uma imagem para representar o item.
Manipulador de infodicas Fornece texto pop-up quando o usuário passa o ponteiro do mouse sobre o objeto .
Manipulador de metadados Fornece acesso de leitura e gravação a metadados (propriedades) armazenados em um arquivo. Isso pode ser usado para estender a exibição Detalhes, dicas de informações, a página de propriedades e os recursos de agrupamento.

 

Outros não estão associados a um tipo de arquivo específico, mas são chamados antes de algumas operações do Shell.

Manipulador Descrição
Manipulador de coluna Chamado pelo Windows Explorer antes de exibir a exibição Detalhes de uma pasta. Ele permite que você adicione colunas personalizadas à exibição Detalhes.
Manipulador de gancho de cópia Chamado quando um objeto de pasta ou impressora está prestes a ser movido, copiado, excluído ou renomeado. Ele permite que você aprove ou vete a operação.
Manipulador do tipo "arrastar e soltar" Chamado quando um arquivo é arrastado com o botão direito do mouse. Ele permite que você modifique o menu de atalho exibido.
Manipulador de sobreposição de ícone Chamado antes que o ícone de um arquivo seja exibido. Ele permite que você especifique uma sobreposição para o ícone do arquivo.
Manipulador de pesquisa Chamado para iniciar um mecanismo de pesquisa. Ele permite implementar um mecanismo de pesquisa personalizado acessível no menu Iniciar ou no Windows Explorer.

 

Os detalhes de como implementar manipuladores de extensão específicos são abordados nas seções listadas acima. Para obter discussões sobre problemas de implementação comuns a todos os manipuladores de extensão do Shell, consulte estes tópicos: