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}
Tópicos relacionados