Como criar manipuladores de dados
Quando um arquivo é copiado para a área de transferência ou arrastado e solto, o Shell cria um objeto de dados que suporta uma variedade de formatos padrão de área de transferência. Para arquivos de um tipo de arquivo específico, você pode estender os formatos de área de transferência disponíveis implementando e registrando um manipulador de dados . Quando um ficheiro de um determinado tipo é transferido, o Shell delega chamadas para a interface IDataObject do objeto de dados para o manipulador de dados, se um dos formatos personalizados for usado.
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 dados.
Instruções
Etapa 1: Implementando manipuladores de dados
Como todos os manipuladores de extensão do Shell, os manipuladores de dados são objetos COM (Component Object Model) em processo implementados como DLLs. Eles exportam duas interfaces além IUnknown: IPersistFile e IDataObject.
O Shell inicializa o manipulador por meio de sua interface IPersistFile. Ele usa essa interface para solicitar o identificador de classe do manipulador (CLSID) e fornece o nome do arquivo. Para obter uma discussão geral sobre como implementar manipuladores de extensão do Shell, incluindo a interface IPersistFile, consulte Criando manipuladores de extensão do Shell.
Depois que o manipulador de dados é inicializado, o Shell delega chamadas do objeto de dados para a interface IDataObject do manipulador se um dos formatos personalizados for usado.
Etapa 2: Registrando manipuladores de dados
Os manipuladores de dados são registrados sob a subchave ProgID do tipo de arquivo, conforme mostrado aqui: HKEY_CLASSES_ROOT\ProgID\shellex\DataHandler
Crie uma subchave nomeada para o manipulador em DataHandler e defina o valor padrão da subchave desse manipulador como a forma de cadeia de caracteres do GUID CLSID do manipulador. Para obter uma discussão geral sobre como registrar manipuladores de extensão do Shell, consulte Criando manipuladores de extensão do Shell.
O exemplo a seguir ilustra entradas do Registro que habilitam um manipulador de dados para um tipo de arquivo .myp de exemplo.
HKEY_CLASSES_ROOT
.myp
(Default) = MyProgram.1
CLSID
{00000000-1111-2222-3333-444444444444}
InProcServer32
(Default) = C:\MyDir\MyCommand.dll
ThreadingModel = Apartment
MyProgram.1
(Default) = MyProgram Application
Shellex
DataHandler
(Default) = {00000000-1111-2222-3333-444444444444}
Tópicos relacionados