Association d'un programme et d'un icone à une extension de fichier

Contenu du snippet

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;



Compatibilité : Delphi 5

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.