Registre

Résolu
Gogo700 Messages postés 31 Date d'inscription mardi 31 août 2010 Statut Membre Dernière intervention 15 mars 2013 - 23 janv. 2011 à 17:47
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre 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.

5 réponses

WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
23 janv. 2011 à 20:54
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
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 janv. 2011 à 00:31
on devrais toujours mettre aussi :

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


________________________________________________________
besoin de câbles audio, vidèo, informatique pas cher ?
0
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
24 janv. 2011 à 19:02
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
0
Gogo700 Messages postés 31 Date d'inscription mardi 31 août 2010 Statut Membre Dernière intervention 15 mars 2013
24 janv. 2011 à 19:49
Bonjour,
J'ai une dernière question.
Le code est-t-il tout prêt fait, où j'ai encore des choses dedans à modifier ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
WhiteHippo Messages postés 1154 Date d'inscription samedi 14 août 2004 Statut Membre Dernière intervention 5 avril 2012 3
25 janv. 2011 à 00:03
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
0
Rejoignez-nous