quinta-feira, 30 de agosto de 2012

Função Delphi Registra uma extensão para um determinado aplicativo

procedure RegistrarExtensao(const Extensao, TipoArquivo, NomeAplicacao, Executavel: string);
var
  ChaveArquivo: string;
  Registro: TRegistry;

  procedure EditarChave(const Chave, Valor: string);
  begin
    Registro.OpenKey(Chave, True);
    Registro.WriteString('', Valor);
    Registro.CloseKey;
  end;

begin
  Registro := TRegistry.Create;
  try
    Registro.RootKey := HKEY_CLASSES_ROOT;
    Registro.LazyWrite := False;
    ChaveArquivo := 'Arquivo' + Extensao;

    //Registra a extensão
    EditarChave('.' + Extensao, ChaveArquivo);

    //Define a descrição para o tipo de arquivo
    EditarChave(Format('%s', [ChaveArquivo]), TipoArquivo);

    //Adiciona uma entrada no menu de contexto
    EditarChave(Format('%s\\shell\\open', [ChaveArquivo]), Format('&Abrir com %s', [NomeAplicacao]));

    //Associa a extensão à aplicação
    EditarChave(Format('%s\\shell\\open\\command', [ChaveArquivo]), Format('"%s" "%s"', [Executavel, '%1']));

    //Define o ícone associado ao tipo de arquivo
    EditarChave(Format('%s\\DefaultIcon', [ChaveArquivo]), Format('%s, 0', [Executavel]));
  finally
    Registro.Free;
  end;
  //Notifica o SO da alteração na associação do tipo de arquivo
  SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end; 

Nenhum comentário:

Postar um comentário