Fonctions & procédures traitant le registre

0/5 (4 avis)

Snippet vu 5 646 fois - Téléchargée 37 fois

Contenu du snippet

Ce code a été rédigé alors que je débutais en Delphi. Il n'estplus d'actualité pour moi mais je le laisse éventuellement. Pour les débutant peut-être que ce code les aidera à se lancer.

A la suite de problème avec la manipulation du registre via une dll et puisque personne sur le forum ne semblait pouvoir me fournir une réponse voici un code qui crée une clé dans la base de registre via une dll.
Il y a dejà des codes sources traitant de cela mais pas via une dll.
Car mon prog, tout dans une app, ça marche mais le fait de migrer la procédure vers une dll ça marche pas.
La raison est simple, il faut pouvoir connaître les constantes HKEY_CURRENT_USER, ... de plus il faut faire attention à ne pas surcharger certaines fonction.

Source / Exemple :


//Dans la dll :
//**********

const HKEY_LOCAL_MACHINE = 2147483650;
const HKEY_CURRENT_CONFIG = 2147483653;
const HKEY_CURRENT_USER = 2147483649;
const HKEY_DYN_DATA = 2147483654;

//Crée une clé dans la clé racine spécifié
function Reg_Create_Key(Key: string): Boolean;
var
  Reg: TRegistry;
begin
  Reg := TRegistry.Create;
  Reg.RootKey := HKEY_CURRENT_USER;
  Reg.OpenKey ('Software\',false);
  Reg_Create_Key := Reg.CreateKey(Key);
  Reg.CloseKey();
  Reg.Free;
end;

exports
          Reg_Create_Key;

//Dans l'application

//implémentation de la dll dans le projet
function Reg_Create_Key(Key:string):boolean;external 'LP_BASE_REGISTRE.DLL';

//Appel de la fonction de la dll
procedure TForm1.FormCreate(Sender: TObject);
begin
     Reg_Create_Key('LP');
end;

//Attention la fonction RegCreateKey existe déjà pour delphi c'est pourquoi j'utilise le underscore '_'

Conclusion :


Le code est simple, à la création de la form, nous appelons la procédure qui crée une clé dans le registre.
Niveau :
HKEY_CURRENT_USER\Software\LP

A voir également

Ajouter un commentaire Commentaires
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 mai 2004
21 août 2002 à 10:55
ok je viens de tester, c'est juste je ne savais pas que les variables HKEY étaient de la librairie windows. Quand je faisais une recherche sur ces variables dans l'aide Delphi je ne trouvais rien. Vois-tu je suis développeur VB et je migre vers Delphi et en VB, il est indispensable de définir les constantes. En revanche, comme tu as l'air de t'y connaître en Delphi, je te conseille de regarder plus souvent les questions du forum. Merci DelphiCool pour ton aide, je pense que ce source aura relevé un point pas toujours évident.
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
20 août 2002 à 18:16
je viens de tester, ça marche tres biens

les HKEY sont definie dans l'unitée Windows

essaye ce source de dll:

library dllreg;

uses windows, registry;


procedure ecrisreg; stdcall;
var REG :tregistry;
begin
reg := tregistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
reg.OpenKey('DelphiCool', true);
reg.WriteString('site web', 'http://delphicool.developpez.com');
reg.Free;
end;




function litreg:pchar; stdcall;
var REG :tregistry;
s :string;
begin
reg := tregistry.Create;
reg.RootKey := HKEY_LOCAL_MACHINE;
if reg.KeyExists('DelphiCool') then
begin
reg.OpenKey('DelphiCool', false);
s := reg.ReadString('site web');
result := pchar(s);
end
else result := '';
reg.Free;
end;


exports ecrisreg, litreg;



end.
Bruto Messages postés 214 Date d'inscription jeudi 21 mars 2002 Statut Membre Dernière intervention 14 mai 2004
20 août 2002 à 16:45
en fait dans ma dll, les variables HKEY n'étaient pas reconnus. Dans une application, ça marche parfaitement pas besoin de préciser les constantes mais dans une dll tu es obligé de les préciser sinon ça marche pas
Essai de migrer ton prog d'une app vers une dll tu verras
Le principe de ce source n'est pas de montrer comment écrire dans la base de registre mais surtout de voir la procédure dans une dll et donc les constantes qui permettent un fonctionnement correct.
DelphiCool Messages postés 455 Date d'inscription mardi 24 juillet 2001 Statut Membre Dernière intervention 10 mars 2009
20 août 2002 à 14:54
c'est quoi qui ne marchait pas avec ta dll??

car j'ai deja fait des procdure et fonction traitant avec labase des registre et je n'ai eu aucun probleme

je n'ai jamais utilisé les constante comme tu le fait

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.