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