Créer clé dans base de registre [Résolu]

Messages postés
102
Date d'inscription
mercredi 8 avril 2009
Dernière intervention
27 juin 2011
- 4 nov. 2009 à 10:43 - Dernière réponse :
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
- 4 nov. 2009 à 19:33
salut à vous,
Alors voilà j'ai un logiciel et j'aimerai qu'il se lance au démarage de windows.
Trés facile je pourrais créer un clé direct dans le registre, mais j'aimerai en faite que quand on lance mon logiciel.exe sa créer cette clé et qu'au prochain lancemement il se lance seul donc je voullais utiliser le code suivant:

procedure EnregistetrayIcons(nom, chemin : string);
Var Registre : TRegistry;
begin
    //Récupère l'url de la page de démarrage
    Registre:=TRegistry.Create; //Crée un objet TRegistry
    Registre.RootKey:=HKEY_LOCAL_MACHINE; //Définit la clé principale
    Registre.OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run',True);
    Registre.WriteString(nom, chemin); //Ecrit dans la base de registres
    Registre.CloseKey; //Ferme la clé
    Registre.Free; //Détruit l'objet
end;


Mais sa ne fonctionne pas :/
Help
Afficher la suite 

Votre réponse

24 réponses

Meilleure réponse
Messages postés
102
Date d'inscription
mercredi 8 avril 2009
Dernière intervention
27 juin 2011
4 nov. 2009 à 15:41
3
Merci
Je retire ce que je viens de dire j'ai réussi!

Ton logiciel était pas mal complet en faite ^^

Merci à toi, et peut être a bientôt :D

Merci shadow578 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 91 internautes ce mois-ci

Commenter la réponse de shadow578
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
4 nov. 2009 à 11:29
0
Merci
Bonjour,

Voir mon source "PostitForEver"


cantador
Commenter la réponse de cs_cantador
Messages postés
102
Date d'inscription
mercredi 8 avril 2009
Dernière intervention
27 juin 2011
4 nov. 2009 à 11:48
0
Merci
Bravo pour ton truc c'est sympas ^^
Par j'ai pris ce que je voulais mais je ne comprend pas ce qu'est ton "DmarrageavecWindows1.Checked" ???
Commenter la réponse de shadow578
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
4 nov. 2009 à 12:08
0
Merci
si j'ai bien bossé (houps..)
cette fonction permet de lancer l'application au démarrage de windows..
en clair, tu dois voir l'icône dans la barre de
tray à droite


cantador
Commenter la réponse de cs_cantador
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
4 nov. 2009 à 12:14
0
Merci
Salut,

sinon il y avait aussi ce snippet


[hr]@+Cirec
[hr]
Commenter la réponse de Cirec
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
4 nov. 2009 à 13:54
0
Merci
"Mais sa ne fonctionne pas :/ "
ça fait quoi ? message d'erreur ? plantage PC ? formatage du d: automatique ?
merci de donner des détails.
Commenter la réponse de JulioDelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
4 nov. 2009 à 14:02
0
Merci
formatage du d: automatique ?
julio a mangé trop de chorizo...

cantador
Commenter la réponse de cs_cantador
Messages postés
102
Date d'inscription
mercredi 8 avril 2009
Dernière intervention
27 juin 2011
4 nov. 2009 à 14:19
0
Merci
[i]D'accord mais moi j'ai fait aussi un fichier résident donc j'ai aussi l'icone qui se mets en bas mais comment je peut remplacer ton "DmarrageavecWindows1.Checked"

Mon script:

procedure TForm1.FormCreate(Sender: TObject);
Var F: TextFile;
    Reg : TRegistry;
begin
     tray.cbSize:=sizeof(tray);
     tray.wnd:=handle;
     tray.uID:=1;
     tray.UCallbackMessage:=wm_AppelMessage;
     tray.hIcon:=Application.Icon.handle; //Choix de l'icone
     tray.szTip:='Détail'; //Choix du message
     tray.uFlags:=nif_message or nif_icon or nif_tip;
     Shell_NotifyIcon(Nim_ADD,@tray);


// démarrage avec windows
  Reg := TRegistry.Create;
  with Reg do
  begin
    try
      RootKey := HKEY_CURRENT_USER;
      if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True) then
      begin
        WriteString('MODEM', chemin + 'Project1wa.exe');
        CloseKey;
      end;
    finally
      Free;
    end;
  end;
  LancerAuDemarrage(DmarrageavecWindows1.Checked);
end;


procedure TForm1.WMAppelMessage(var msg : TMessage);
Var Curs:TPoint;
begin
//Clique gauche de la souris
    if msg.LParam=Wm_RButtonDown then begin
       SetForegroundWindow(Handle);
       GetCursorPos(Curs); //Récupère les coordonnées de la souris
       PopupMenu1.Popup(Curs.X,Curs.Y); //Ouvre le menu surgissant à l'emplacement spécfié par les coordonnees de la souris
       PostMessage(Handle,WM_NULL,0,0);
    end;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
    Shell_NotifyIcon(Nim_DELETE,@tray);
end;
 
procedure TForm1.Quitter1Click(Sender: TObject);
begin
  application.terminate;
  Shell_NotifyIcon(Nim_DELETE,@tray); 
end;


procedure TForm1.Ouvrirfichier1Click(Sender: TObject);
begin
Show;
end;

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);

begin
  CanClose := FALSE;
  TForm(Sender).Visible:= false;

end;


end.
Commenter la réponse de shadow578
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
4 nov. 2009 à 14:25
0
Merci
D'où sort "chemin" ?
Commenter la réponse de JulioDelphi
Messages postés
102
Date d'inscription
mercredi 8 avril 2009
Dernière intervention
27 juin 2011
4 nov. 2009 à 14:33
0
Merci
chemin tu le déclare avant implemtation

var
  Form1: TForm1;
  chemin: string;



implementation

{$R *.dfm}
Commenter la réponse de shadow578
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
4 nov. 2009 à 14:42
0
Merci
Et où est-il renseigné ?
je cherche un "Chemin:= ..."
Commenter la réponse de JulioDelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
4 nov. 2009 à 14:47
0
Merci
LancerAuDemarrage(true);


cantador
Commenter la réponse de cs_cantador
Messages postés
102
Date d'inscription
mercredi 8 avril 2009
Dernière intervention
27 juin 2011
4 nov. 2009 à 15:05
0
Merci
Sa me met une erreur:

[Erreur] Unitwa.pas(44): Déclaration forward ou external non satisfaite : 'TForm1.LancerAuDemarrage'
Commenter la réponse de shadow578
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
4 nov. 2009 à 15:06
0
Merci
ce code fonctionne à 200%
procedure TForm1.FormCreate(Sender: TObject);
begin
// démarrage avec windows
  with TRegistry.Create do
  begin
    try
      RootKey := HKEY_CURRENT_USER;
      if OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', True) then
      begin
        WriteString('MODEM', Application.ExeName);
        CloseKey;
      end;
    finally
      Free;
    end;
  end;
end;



[hr]@+Cirec
[hr]
Commenter la réponse de Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
4 nov. 2009 à 15:18
0
Merci
mais le Snippet reste la meilleur option
il couvre toutes les possibilités [AllUsers/CurrentUser] & [Run/RunOnce]

Ex:
 if LancerAuDemarrage('Modem', False, False) then
  ShowMessage('Inscription réussit')
else
  ShowMessage('Echec de l''inscription');

[hr]@+Cirec
[hr]
Commenter la réponse de Cirec
Messages postés
102
Date d'inscription
mercredi 8 avril 2009
Dernière intervention
27 juin 2011
4 nov. 2009 à 15:18
0
Merci
En effet merci, maintenant dernier truc pour aujourd'hui:

Quand je lance mon logiciel, il se situe donc en bas a droit, mais si par exemple on le relance j'aimerai mettre un message d'alerte tel que: Attention logiciel déjà ouvert
Alors que la si je relance il me mets une grosse erreur Windows XD
Commenter la réponse de shadow578
Messages postés
2354
Date d'inscription
dimanche 5 octobre 2003
Dernière intervention
18 novembre 2010
4 nov. 2009 à 15:22
0
Merci
Mutex, il existe un compo tout simple "UnPas2" (Lire 'Un pas Deux'), un conseil d'ergonomie : pas de popup intrusive, contente toi de ne pas relancer l'appli et de mettre la 1ere deja lancée au premier plan au pire.
Commenter la réponse de JulioDelphi
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
4 nov. 2009 à 15:25
0
Merci
[Erreur] Unitwa.pas(44): Déclaration forward ou external non satisfaite : 'TForm1.LancerAuDemarrage'

Normal !

si tu ne mets pas tout le code, il va bien moins marcher

cantador
Commenter la réponse de cs_cantador
Messages postés
4996
Date d'inscription
dimanche 26 février 2006
Dernière intervention
27 mars 2018
4 nov. 2009 à 15:32
0
Merci
...et dans PostitForever, le souci de la relance intempestive de l'appli a été traitée également
voir le source-->> Mutex

cantador
Commenter la réponse de cs_cantador
Messages postés
102
Date d'inscription
mercredi 8 avril 2009
Dernière intervention
27 juin 2011
4 nov. 2009 à 15:39
0
Merci
En effet je viens de voir cela mais je n'est pas saisi comment tu as fait ?
Commenter la réponse de shadow578

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.