Page 2 sur 3

Re: lancer un exe au demarrage

Publié : mer. 22/sept./2010 11:44
par Ar-S
tu n'aurais pas un antivirus ou autre spybot qui "blinde" ta base de registre par hasard ?

Re: lancer un exe au demarrage

Publié : mer. 22/sept./2010 16:40
par nico
Pour moi, le dernier code de Dobro fonctionne.

Re: lancer un exe au demarrage

Publié : dim. 09/sept./2012 20:08
par Ar-S
Je déterre mais ça pourra intéresser du monde.
J'ai modifié la procédure en incluant le chemin de l'exe lors du lancement de la commande. J'ai aussi ajouté une vérification de l'existence du programme à lancer avec l'inscription dans le registre.

Code : Tout sélectionner

Procedure.b StartWithWindows(ARS_ProgPath.s, state.b)
  ; Original code by Joakim Christiansen / StartWithWindows(state.b)
  ; Modify by Ar-S / 2012 - Add filepath to the proce and some checks
  
  Protected key.l = #HKEY_CURRENT_USER ;or #HKEY_LOCAL_MACHINE pour tout les utilisateur de l'ordi
  Protected Path.s = "Software\Microsoft\Windows\CurrentVersion\Run" ;ou RunOnce pour le lancer qu'une fois
  Protected.s Value, String, Chemin
  Protected CurKey.l
  Protected.b Succes
  Chemin = ARS_ProgPath
  
  String.s = GetFilePart(Chemin)
  Value.s = RemoveString(String, "."+GetExtensionPart(String))
  
  ; Créer la clef
  If state = 1 
    ; Avant de créer la clé, on vérifie que le prog existe
    If FileSize(Chemin) > 0
      Chemin = Chr(34) + Chemin + Chr(34)
      RegCreateKey_ (key,@Path,@CurKey)
      RegSetValueEx_ (CurKey,@Value,0, #REG_SZ ,@Chemin, Len (Chemin))
      RegCloseKey_ (CurKey)
      Succes = 1 
    Else
      Succes = 0
    EndIf
    
    ; Suppression de clé 
  Else 
    RegOpenKey_ (key,@Path,@CurKey)
    RegDeleteValue_ (CurKey,@Value)
    RegCloseKey_ (CurKey)
    Succes = 1
  EndIf
  
  ProcedureReturn Succes
EndProcedure 

;- EXEMPLE
; Inscrire la clé
Debug StartWithWindows("E:\votre_prog.exe",1)

; Supprime la clé
Debug StartWithWindows("E:\votre_prog.exe",0)

; Dans les 2 cas, retourne 1 si succés ou 0 si erreur (ne peut intervenir que si le programme n'existe pas).


Re: lancer un exe au demarrage

Publié : mer. 12/sept./2012 16:03
par Yrahen
Personnellement, ca marche chez moi, meme avec Avast.
PS:L'aurtohgrafe pik lé zieus.

Re: lancer un exe au demarrage

Publié : mer. 12/sept./2012 16:13
par Ar-S
Yrahen a écrit :Personnellement, ca marche chez moi, meme avec Avast.
PS:L'aurtohgrafe pik lé zieus.
Tu parles de quel code ?

Re: lancer un exe au demarrage

Publié : mer. 12/sept./2012 17:14
par Micoute
Pour lancer un programme avec Windows 7, il suffit de le mettre dans le répertoire Démarrage, c'est tout !

Re: lancer un exe au demarrage

Publié : mer. 12/sept./2012 20:30
par Ar-S
Micoute, si tu proposes un logiciel censé se lancer au démarrage mais que l'utilisateur voit :
" Pour que ce logiciel se lance au démarrage, merci de créer un raccourcis de celui ci et de le copier dans le menu demarrer/ demarrage ou à cet endroit

Code : Tout sélectionner

C:\Users\VOTRENOM\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
C'est un peu la loose non ? :mrgreen:

Re: lancer un exe au demarrage

Publié : jeu. 13/sept./2012 8:30
par Micoute
J'en conviens, mais dois-je imaginer que tous les autres sont des ignares ?

Re: lancer un exe au demarrage

Publié : jeu. 13/sept./2012 8:38
par Ar-S
J'en conviens, mais dois-je imaginer que tous les autres sont des ignares ?
Je ne comprends pas ? Si tu parles des gens qui ont un ordi, pour en rencontrer tous les jours (c'est mon travail), je peux t'assurer que sans être ignare, la majorité des gens savent lancer un navigateur, leur suite bureautique si besoin et ça ne vol pas bien plus haut.

En tout cas le code posté ci dessus fonctionne, c'est le principale.

Re: lancer un exe au demarrage

Publié : jeu. 13/sept./2012 9:12
par Micoute
Touché...coulé ! Tu as utilisé les bons arguments.

Re: lancer un exe au demarrage

Publié : mar. 23/janv./2018 10:31
par Ar-S
Je déterre ce sujet car je m'aperçois d'un soucis chagrinant :?
J'ai voulu retester ce code.
Je m'aperçoit qu'il fonctionne mal. En gros le Chemin de l'exe s'inscrit bien au bon endroit mais ne s'inscrit pas en entier !?
Dans mon exemple : "D:\_EXE\TicTacToe.exe" la clé est bien créée mais la valeur ressemble à ça : "D:\_EXE\Ti
testé en x64 PB 5.46 et 5.61
La suppression de clé elle fonctionne (suffit de dé-commenter).

Code : Tout sélectionner

Procedure.b StartWithWindows(Chemin.s, state.b)
  ; Original code by Joakim Christiansen / StartWithWindows(state.b)
  ; Modify by Ar-S / 2012 - Add filepath to the proce and some checks
 
  Protected key.l = #HKEY_CURRENT_USER ;or #HKEY_LOCAL_MACHINE pour tout les utilisateur de l'ordi
  Protected Path.s = "Software\Microsoft\Windows\CurrentVersion\Run" ;ou RunOnce pour le lancer qu'une fois
  Protected.s Value, String
  Protected CurKey.l
  Protected.b Succes
  

  String.s = GetFilePart(Chemin)
  Debug "String.s : " + String.s                                          ;------- TEST
  Value.s = RemoveString(String, "."+GetExtensionPart(String))
  Debug "Value.s : " + Value.s                                          ;------- TEST
  
  ; Créer la clef
  If state = 1
    ; Avant de créer la clé, on vérifie que le prog existe
    If FileSize(Chemin) > 0
      Chemin = Chr(34) + Chemin + Chr(34)
      Debug "Vérif Chemin : " + Chemin                                           ;------- TEST
      Longueur = Len (Chemin)
      RegCreateKey_ (key,@Path,@CurKey)
      RegSetValueEx_ (CurKey,@Value,0, #REG_SZ ,@Chemin, Longueur)
      RegCloseKey_ (CurKey)
      Succes = 1
    Else
      Succes = 0
    EndIf
   
    ; Suppression de clé
  Else
    RegOpenKey_ (key,@Path,@CurKey)
    RegDeleteValue_ (CurKey,@Value)
    RegCloseKey_ (CurKey)
    Succes = 1
  EndIf
 
  ProcedureReturn Succes
EndProcedure

;- EXEMPLE
; Inscrire la clé
Debug StartWithWindows("D:\_EXE\TicTacToe.exe",1)

; Supprime la clé
;  Debug StartWithWindows("D:\_EXE\TicTacToe.exe",0)

; Dans les 2 cas, retourne 1 si succés ou 0 si erreur (ne peut intervenir que si le programme n'existe pas).

Re: lancer un exe au demarrage

Publié : mar. 23/janv./2018 12:26
par Zorro
de toute façon cette façon de faire avec windows 10 ne marche plus vraiment :)

il faut utiliser le dossier de démarrage de windows 10

soit manuellement en utilisant " shell:startup " dans "executer" de windows 10

soit en utilisant ce code qui fait a peut pres la meme chose :)
(il ressort le chemin qui pointe au meme endroit )

Code : Tout sélectionner


Declare.s specialfolder2(folderno)
#CSIDL_STARTUP=$07 

demarrage$=SpecialFolder2(#CSIDL_STARTUP)+"\"
debug demarrage$


Procedure.s SpecialFolder2(folderno)
	listptr=0
	result$=Space(270)
	SHGetSpecialFolderLocation_(0,folderno,@listptr)
	SHGetPathFromIDList_(listptr,@result$)
		ProcedureReturn Trim(result$)
EndProcedure


; Epb
j'en avais deja parlé ici
http://www.purebasic.fr/french/viewtopi ... 10#p188441

et ici
http://www.purebasic.fr/french/viewtopi ... 10#p190853

et peut etre meme encore ailleurs :lol:

Re: lancer un exe au demarrage

Publié : mar. 23/janv./2018 13:20
par Ar-S
Sur le principe ok mais ça n'explique pas pourquoi ça ne marche pas au niveau du RegSetValueEx_ qui n’écrit pas tout le path.

---edit----
Du coup j'utilise le module de ts-soft qui fonctionne bien

Code : Tout sélectionner

http://www.purebasic.fr/english/viewtopic.php?f=12&t=56204&p=512775&hilit=REG_DWORD#p512775

Re: lancer un exe au demarrage

Publié : mar. 23/janv./2018 14:30
par djes
Sans avoir testé, je me demande si tu as bien vérifié ta longueur (unicode...)

Re: lancer un exe au demarrage

Publié : mar. 23/janv./2018 15:05
par Ar-S
Je me doutais bien que l'unicode allait me faire un coup de traf.. ma variable longueur semble pourtant bonne.
Cependant comme le l'ai indiqué, le module de Ts-Soft fonctionne au poil. testé en simple reg_sz et et Dword.
Me suis fait un petit soft pour activer/désactiver le transfert TCP/IP sous windows.