Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Os procedimentos gerais para implementar e registrar um manipulador de extensão Shell são discutidos em Criando manipuladores de extensão Shell. Este documento se concentra nos aspetos da implementação que são específicos para manipuladores de gancho de cópia.
- Implementando manipuladores de gancho de cópia
- Registrando manipuladores de gancho de cópia
- Tópicos relacionados
Instruções
Etapa 1: Implementando manipuladores de gancho de cópia
Como todos os manipuladores de extensão do Shell, os manipuladores de gancho de cópia são objetos COM (Component Object Model) em processo implementados como DLLs. Eles exportam uma interface além IUnknown: ICopyHook. O Shell inicializa o manipulador diretamente, portanto, não há necessidade de uma interface de inicialização como IShellExtInit.
A ICopyHook interface tem um único método, ICopyHook::CopyCallback. Quando uma pasta está prestes a ser movida, o Shell chama esse método. Abrange uma variedade de informações, incluindo:
- O nome da pasta.
- O destino da pasta ou o novo nome.
- A operação que se está a tentar.
- Os atributos das pastas de origem e destino.
- Um identificador de janela que pode ser usado para exibir uma interface de utilizador.
Quando o método ICopyHook::CopyCallback do seu manipulador é chamado, ele retorna um dos três valores a seguir para indicar ao Shell como proceder.
| Valor | Descrição |
|---|---|
| IDSIM | Permite a operação. |
| IDNO | Impede a operação nesta pasta. O Shell pode continuar com quaisquer outras operações que tenham sido aprovadas, como uma operação de cópia em lote. |
| IDCANCEL | Impede a operação atual e cancela quaisquer operações pendentes. |
Etapa 2: Registrando manipuladores de gancho de cópia
Os manipuladores de gancho de cópia para pastas estão registados na subchave HKEY_CLASSES_ROOT\Directory\shellex\CopyHookHandlers. Crie uma subchave de CopyHookHandlers com o nome do manipulador e defina o valor padrão da subchave para a forma de cadeia de caracteres do GUID do identificador de classe (CLSID) do manipulador.
O exemplo a seguir adiciona a subchave MyCopyHandler à lista de handlers de cópia do Shell.
HKEY_CLASSES_ROOT
Directory
shellex
CopyHookHandlers
MyCopyHandler
(Default) = {MyCopyHandler CLSID GUID}
Os manipuladores de gancho de cópia para objetos de impressora são registrados essencialmente da mesma maneira. A única diferença é que deve registá-los sob a subchave HKEY_CLASSES_ROOT\Printers.
Comentários
Normalmente, os usuários e aplicativos podem copiar, mover, excluir ou renomear pastas com poucas restrições. Ao implementar um manipulador de gancho de cópia, você pode controlar se essas operações ocorrem. Por exemplo, a implementação desse manipulador permite que você impeça que pastas críticas sejam renomeadas ou excluídas. Os manipuladores de gancho de cópia também podem ser implementados para objetos de impressora.
Os manipuladores de gancho de cópia são globais. O Shell chama todos os manipuladores registrados sempre que um aplicativo ou usuário tenta copiar, mover, excluir ou renomear uma pasta ou objeto de impressora. O manipulador não executa a operação em si. Apenas o aprova ou veta. Se todos os gestores aprovarem, o Shell fará a operação. Se algum manipulador vetar a operação, ela será cancelada e os manipuladores restantes não serão chamados. Os manipuladores de gancho de cópia não são informados do sucesso ou falha da operação, portanto, não podem ser usados para monitorar operações de arquivo.
Tópicos relacionados