Fonctions & procédures traitant le registre

Soyez le premier à donner votre avis sur cette source.

Snippet vu 5 218 fois - Téléchargée 35 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

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
Modérateur
Dernière intervention
10 mars 2009

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

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
Modérateur
Dernière intervention
10 mars 2009

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.