Page 1 sur 3
Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 16:07
par jambon
Bonjour à tous voila je cherchai à ajouter mon programme au démarrage de Windows.
Je me suis donc renseigné et donc naturellement j'ai trouvé un morceau de code que j'ai adapté.
Code : Tout sélectionner
Procedure StartWithWindows(State.b) ; by Joakim Christiansen
Protected Key.l = #HKEY_CURRENT_USER ;or #HKEY_LOCAL_MACHINE for every user on the machine
Protected Path.s = "Software\Microsoft\Windows\CurrentVersion\Run"
Protected Value.s = "frommage" ;Change into the name of your program
Protected String.s = Chr(34)+ProgramFilename()+Chr(34) ;Path of your program
Protected CurKey.l
If State
RegCreateKey_(Key,@Path,@CurKey)
RegSetValueEx_(CurKey,@Value,0,#REG_SZ,@String,Len(String))
Else
RegOpenKey_(Key,@Path,@CurKey)
RegDeleteValue_(CurKey,@Value)
EndIf
RegCloseKey_(CurKey)
EndProcedure
Je l'ai ajouté dans un fichier annexe et l'ai inclus dans mon projet puis je l'ai appeller naturellement avec
StartWithWindows(1)
Tout semble fonctionner à part que la valeur du chemin ajouter dans le registre est tronqué...
La valeur concerné est "String.s"
Je me suis aperçu que cette variable était donc limiter en taille j'ai essayé de changer la taille de la variable via string$ ou en spécifiant la taille exacte mais sa ne semble faire aucun effet... la valeur que j'ai assigné fonctionne pourtant bien dans les autres cas d'utilisation il semble avoir un soucis de cette variable dans le cas ou je l'utilise, il y'a surement quelque chose qui m'échappe mais je voit vraiment pas
Cordialement,
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 16:24
par falsam
J'avais posté une réponse que finalement j'enleve. Faut quand même pas abuser sur ta façon de t'inscrire sur ce forum, l'objet de ta question et le fromage !!
une chance que je me sois partiellement trompé dans ma réponse.
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 16:39
par jambon
@falsam
Ah ah malheureusement pour toi j'ai vu ta solution (et aussi ton jeu de mot ^^) mais sa ne peut marcher. (je vient de tester sans surprise)
Value.s = "" c'est le nom de la clé
Effectivement la clé n'a pas de soucis mais c'est sa valeur assigné qui est "tronqué" (couper) qui est représenté par:
String.s.
En plus clair actuellement j'ai donc:
Nom de la clé = Ok
Ou s'enregistre la clé = Ok
Le chemin du programme à démarrer = Pas Ok (tronqué)
---------------------------
PS: Sur ma façon de s'inscrire? J'ai du mal à voir ce que j'ai fait de mal pour l'instant hormis poser une question.
D'ailleurs, je suis étonné de voir qu'on ne peut pas vraiment se présenter

Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 16:54
par falsam
Bon de toute façon il parait que je suis en phase de devenir con*, alors voila le code avec la correction. Tu peux tester en fermant juste la session et en l'ouvrant à nouveau.
Code : Tout sélectionner
Procedure StartWithWindows(State.b) ; by Joakim Christiansen
Protected Key.l = #HKEY_CURRENT_USER ;or #HKEY_LOCAL_MACHINE for every user on the machine
Protected Path.s = "Software\Microsoft\Windows\CurrentVersion\Run"
Protected Value.s = "Notepad" ;Change into the name of your program
Protected String.s = Chr(34)+"C:\Windows\System32\notepad.exe"+Chr(34) ;Path of your program
Protected CurKey.l
If State
RegCreateKey_(Key,@Path,@CurKey)
RegSetValueEx_(CurKey,@Value,0,#REG_SZ,@String,Len(String))
Else
RegOpenKey_(Key,@Path,@CurKey)
RegDeleteValue_(CurKey,@Value)
EndIf
RegCloseKey_(CurKey)
EndProcedure
StartWithWindows(1)
StartWithWindows(0) pour désactiver
*Con et plus si affinité .... héhé
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 17:08
par jambon
Je vient de tester. (même si je suis surpris parce que j'utilise exactement le même code)
Et enfaite c'est toujours tronqué dans ton example:
Ma clé est ajouté mais ne démarre rien car dans le registre j'ai
Notepad (= nom de la clé)
Data = "C:\Windows\Syst (sa coupe là, cette valeur dans pureBasic c'est String.s)
D'ou le pourquoi du comment que j'ai chercher à voir si y'avait pas un problème au niveau de la variable String.s au niveau de sa taille qui l'empêche d'inscrire la valeur complète ici: "C:\Windows\System32\notepad.exe"
Je suis sur Windows XP.
Après si chez vous sa fonctionne alors là je comprend plus rien
En tout cas merci d'avoir changer d'avis même si je mouline toujours

Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 17:17
par falsam
je suis sous windows 7. j'ai relancé ma session et notepad s’exécute bien automatiquement.
Tu as bien fait un copier/coller du code que j'ai posté ?
Le nom du fichier à éxécuter est bien entre guillemet et borner par Chr(34) ?
Code : Tout sélectionner
Protected String.s = Chr(34)+"C:\Windows\System32\notepad.exe"+Chr(34)
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 17:27
par jambon
Oui j'ai bien mis ton code
Et après redémarrage sa ne fonctionne toujours pas.
EDIT: Je vient même d'essayer sur un projet vierge avec uniquement cette procédure et sa me donne le meme bug..
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 17:31
par falsam
zizi a écrit :Oui j'ai bien mis ton code
Et après redémarrage sa ne fonctionne toujours pas.
Va falloir que je redémarre mon vieux pc sous xp !!! C'est pas gagné.
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 17:41
par falsam
Fonctionne aussi sous XP SP2.
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 17:44
par jambon
Ok, je vais tester sur mon autre ordinateur demain.
Je vous tient au courant mais donc apparament le code est ok.
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 18:36
par jambon
Je vient de tester à l'instant j'ai exactement le même soucis c'est à ne plus rien comprendre...
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 19:21
par Micoute
Bonsoir falsam, j'ai essayé ton code sur W7 et XP, ça ne fonctionne qu'avec W7 !
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 20:06
par falsam
@zizi et @Micoute : Comme vous pouvez le voir sur cette capture, je suis bien sous XP SP2 et notepad au lancement de window XP est bien configuré avec la bonne valeur correspondant à cette ligne du code
Code : Tout sélectionner
Protected String.s = Chr(34)+"C:\Windows\System32\notepad.exe"+Chr(34)
J'ai fermé la session puis ouverte à nouveau et notepad se lance quelques secondes après l'ouverture.
Re: Valeur / String qui semble être couper
Publié : lun. 23/juin/2014 23:12
par PAPIPP
Bonjour Falsam
C'est OK et je suis sous XP SP3
J'ai fermé la session puis ouverte à nouveau et notepad se lance quelques secondes après l'ouverture.
A+
Re: Valeur / String qui semble être couper
Publié : mar. 24/juin/2014 9:23
par Backup
quoiqu'il en soit la solution de lancer un prg au demarrage de windows a deja été donné
une petite recherche , t'aurai informé
ici par exemple :
http://www.purebasic.fr/french/viewtopi ... e&start=15
et le truc idiot qui peut faire couper un string , c'est le code Ascii 0 puisque souvent utilisé pour signaler la fin d'une chaine ..
tu utilises quoi comme Version de Purebasic ?
car les vielles version de Purebasic avait une limitation en Taille (Avant la 4.00 de mémoire ) sur les variable chaine ....
de plus tu constates que la chaine a été coupée .... mais comment ? par le Debugeur ?
si c'est le cas , c'est normal , le Debugeur ne peut pas afficher une chaine de caractères trop longue !
utilises le message requester ... ou un editorGadget , pour etre sur d'afficher le contenu de ta variable chaine
car le debugeur est limité en affichage lui
