Registre [Résolu]

Messages postés
31
Date d'inscription
mardi 31 août 2010
Dernière intervention
15 mars 2013
- - Dernière réponse : WhiteHippo
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
- 25 janv. 2011 à 00:03
Bonjour,
J'ai créé une fiche et un boutton,
Lorsque l'on clique sur le boutton, le code suivant s'execute :

var
Registre: TRegistry;
begin
  Registre:= TRegistry.Create;
  with Registre do try
    RootKey := HKEY_CLASSES_ROOT;
    OpenKey('Script SG',True);
    WriteString('','Script SG');
    CloseKey;
    OpenKey('Script SG\shell\open\command',True);
    WriteString('',Application.ExeName+' "%1"');
    CloseKey;
    OpenKey('.SG',True);
    WriteString('','Script SG');
    CloseKey;
    OpenKey('Script SG\DefaultIcon',True);
    WriteString('','');
    CloseKey;
    finally
    free;


Comme vous le voyez, à la ligne 17 il n'y a (presque) rien.
J'aimerais que l'icone inclue dans mon fichier RES soit visible sur les fichiers SG, quel code dois-je insérer ?

J'ai essayé avec :
    WriteString('',Application.ExeName+'\Icon\2\0.ico');


(Ceci étant l'adresse de l'icône dans mon fichier RES, sans succès)

Merci d'avance;
Gogo700.
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
3
Merci
Bonsoir

Voila ce qui devrait solutionner ton problème.

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;

procedure TForm1.Button1Click(Sender: TObject);
begin
  EnregistrerTypeDeFichier
    ( '.sg'
    , 'Script SG'
    , 'Script SG : Blah blah description'
    , Application.ExeName
    , 1
    ) ;
end;


Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 98 internautes ce mois-ci

Commenter la réponse de WhiteHippo
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
0
Merci
on devrais toujours mettre aussi :

if openKey() then
   {action}
else
  {erreur registre}


________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?
Commenter la réponse de f0xi
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
0
Merci
Bonsoir f0xi

Comme "tout va pour le mieux dans le meilleur des mondes...", le OpenKey fonctionne toujours !

N.B. Je sais, je sais, je suis de mauvaise foi . Tu as entièrement raison.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
Commenter la réponse de WhiteHippo
Messages postés
31
Date d'inscription
mardi 31 août 2010
Dernière intervention
15 mars 2013
0
Merci
Bonjour,
J'ai une dernière question.
Le code est-t-il tout prêt fait, où j'ai encore des choses dedans à modifier ?
Commenter la réponse de Gogo700
Messages postés
1270
Date d'inscription
samedi 14 août 2004
Dernière intervention
5 avril 2012
0
Merci
Bonsoir

Soit tu l'utilises tel quel (il est fonctionnel en l'état), soit tu l'améliores pour tester si l'OpenKey s'est correctement executé comme l'a suggérer f0xi.

Cordialement.[hr]"L'imagination est plus importante que le savoir." Albert Einstein
Commenter la réponse de WhiteHippo

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.