uses Registry, ShlObj ;
procedure EnregistrerTypeDeFichier
( const Extension : string
; const TypeDeFichier : string
; const Description : string
; const NomExecutable : string
; const IndexIcone : Integer
) ;
var
Registre : TRegistry;
begin
Registre := TRegistry.Create;
with Registre do
try
RootKey := HKEY_CLASSES_ROOT ;
Access := KEY_WRITE ;
OpenKey( Extension, True) ;
WriteString('', TypeDeFichier);
CloseKey;
OpenKey(TypeDeFichier, True);
WriteString('', Description);
CloseKey;
OpenKey(TypeDeFichier + '\DefaultIcon', True);
WriteString('' + '\DefaultIcon', AnsiQuotedStr(NomExecutable, '"') + ',' + IntToStr(IndexIcone));
CloseKey;
OpenKey(TypeDeFichier + '\Shell\Open', True);
WriteString('', '&Open');
CloseKey;
OpenKey(TypeDeFichier + '\Shell\Open\Command', True);
WriteString('', AnsiQuotedStr(NomExecutable, '"') + AnsiQuotedStr('%1', '"') );
CloseKey;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
finally
Registre.Free;
end;
end;
// Exemple d'utilisation
procedure TForm1.Button1Click(Sender: TObject);
begin
EnregistrerTypeDeFichier
( '.ext'
, 'Fichier EXT'
, 'Fichier EXT : Description...'
, Application.ExeName
, 1
) ;
end;