Como criar manipuladores de dados

Quando um arquivo é copiado para a área de transferência ou arrastado e removido, o Shell cria um objeto de dados que dá suporte a uma variedade de formatos de área de transferência padrão. Para arquivos que são 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 arquivo do tipo de arquivo é transferido, os representantes do Shell chamam 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 do Shell são discutidos em Criando manipuladores de extensão do Shell. Este documento se concentra nesses aspectos de implementação específicos dos 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 de IUnknown: IPersistFile e IDataObject.

O Shell inicializa o manipulador por meio de sua interface IPersistFile . Ele usa essa interface para solicitar o CLSID (identificador de classe) do manipulador 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 for inicializado, os delegados do Shell chamarão do objeto de dados para a interface IDataObject do manipulador se um dos formatos personalizados for usado.

Etapa 2: Registrar manipuladores de dados

Os manipuladores de dados são registrados sob a subchave ProgID do tipo de arquivo, conforme mostrado aqui: HKEY_CLASSES_ROOT\Shellex\Do ProgID\DataHandler

Crie uma subchave chamada para o manipulador em DataHandler e defina o valor padrão da subchave desse manipulador para 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 as entradas do Registro que habilitam um manipulador de dados para um exemplo de tipo de arquivo .myp.

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}

Criar Manipuladores de Extensão de Shell

IPersistFile

Idataobject