Lire une valeur dans le registre

Résolu
Maniaxman Messages postés 155 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 17 juillet 2008 - 13 févr. 2005 à 16:54
Maniaxman Messages postés 155 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 17 juillet 2008 - 21 févr. 2005 à 19:21
Salut !!

En sachant que j'ai deux CheckBox, et que je veux lire la valeur de NoClose qui est dans
(HKCU\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer),
comment puis-je faire pour qu'un CheckBox soit coché en fonction de
la valeur de la clé? (Par exemple que si la valeur est égale à 1, le
CheckBox 1 soit coché, et si la valeur est égale à 0 ou n'existe pas le
CheckBox2 soit coché.)

!! NoClose est une clé.



Merci d'avance

25 réponses

Maniaxman Messages postés 155 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 17 juillet 2008
14 févr. 2005 à 21:11
en fait, dans mon programme il y aura beaucoup de ButtonRadio, et au lieu de mettre :



procedure TForm2.RadioButton1Click(Sender: TObject);

var

reg : TRegistry;

begin

reg := TRegistry.create;

reg.RootKey := HKEY_CURRENT_USER;

reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', false);

reg.WriteInteger('NoClose',0);

reg.closeKey;

end;



procedure TForm2.RadioButton2Click(Sender: TObject);

var

reg : TRegistry;

begin

reg := TRegistry.create;

reg.RootKey := HKEY_CURRENT_USER;

reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', false);

reg.WriteInteger('NoClose',1);

reg.closeKey;

end;



pour chaque valeur (NoClose, Nofind, NoRun, etc ...)

j'ai trouvé ceci :



procedure TForm1.valeur_registre(SelectRootKey: HKEY; SelectKey: string; NewValueName: string; Value: integer);

begin

with TRegistry.Create do

begin

try

RootKey := SelectRootKey;

OpenKey(SelectKey, True);

Writeinteger(NewValueName, Value);

finally

Free;

end;

end;

end;



procedure TForm1.RadioButton1Click(Sender: TObject);

begin

valeur_registre(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', 'NoClose', 1);

end;



procedure TForm1.RadioButton2Click(Sender: TObject);

begin

valeur_registre(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer', 'NoClose', 0);

end;



ce qui sera beaucoup plus rapide et plus simple.



ce code à l'air de marcher, et jusque ici je n'ai pas eu de problèmes, mais j'ai plusieurs questions :

1) dans le code que je viens de mettre, il n'y a pas reg.closeKey; , est-ce grave?

2)que veux dire :

finally

Free;

end;

?

et 3) y aurait-il un moyen de faire une même procédure que :

procedure TForm1.valeur_registre(SelectRootKey: HKEY; SelectKey: string;

pour lire la valeur (NoClose), et cocher une case en fonction de sa valeur (0 ou 1), ou si elle existe ou pas ?



Merci
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
15 févr. 2005 à 19:10
Ben dis donc, ni69, c'est quasiment un didacticiel sur TRegistry !



Maniaxman > Il est ach'ment sympa, ni69, non ?



A mon avis, il a passé pas mal de temps sur ton probème...



Si ses réponses te satisfont, ça lui ferait sûrement plaisir que tu cliques sur le(s) bouton(s) RÉPONSE ACCEPTÉE là-à-gauche.



Et puis comme ça, on saura tous que le problème est résolu. Cette information est intéressante pour :



- ceux qui voudraient poster une réponse à ta question,

- ceux qui viennent chercher une réponse à cette même question.



Et n'hésite pas à poster plutôt une autre question, plus précise, si tu as besoin de compléter ton information sur TRegistry.



Bonne prog' à toutes et tous
0
Maniaxman Messages postés 155 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 17 juillet 2008
19 févr. 2005 à 12:08
ok, merci

et pour le code qui permet d'écrire dans le registre :


procedure TForm1.valeur_registre(SelectRootKey: HKEY; SelectKey: string; NewValueName: string; Value: integer);

begin

with TRegistry.Create do

begin

try

RootKey := SelectRootKey;

OpenKey(SelectKey, True);

Writeinteger(NewValueName, Value);

finally

Free;

end;

end;

end;


où est-ce que je place CloseKey ?
0
Maniaxman Messages postés 155 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 17 juillet 2008
19 févr. 2005 à 15:13
<!--StartFragment --> dans la fonction lit_valeur_registre_renvoiebool, j'ai préféré mettre ceci :
result := not (ReadInteger(Value)=0)
au lieu de
result := (ReadInteger(Value)=1)

quand la valeur est égale à un nombre autre que 0 ça marche, le radiobutton1 est coché, mais quand la valeur est égale à 0 ou n'existe pas, aucun RadioButton n'est coché, comment faire?
0

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

Posez votre question
Maniaxman Messages postés 155 Date d'inscription lundi 10 janvier 2005 Statut Membre Dernière intervention 17 juillet 2008
21 févr. 2005 à 19:21
c bon nico, j'ai trouvé merci !!

j'ai utilisé le premier code, avec renvoie value et j'ai ensuite mis ceci :



RadioButton1.Checked := (lit_valeur_registre_renvoievalue
(HKEY_CURRENT_USER,
'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'NoClose') = 0);

RadioButton2.Checked := not (lit_valeur_registre_renvoievalue
(HKEY_CURRENT_USER,
'Software\Microsoft\Windows\CurrentVersion\Policies\Explorer',
'NoClose') = 0);



je crois que maintenant j'ai tout ce qu'il me faut, merci beaucoup !!
0
Rejoignez-nous