Valeur / String qui semble être couper

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Valeur / String qui semble être couper

Message 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,
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Valeur / String qui semble être couper

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Re: Valeur / String qui semble être couper

Message 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é :wink:

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 :lol:
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Valeur / String qui semble être couper

Message 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é
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Re: Valeur / String qui semble être couper

Message 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 8O


En tout cas merci d'avoir changer d'avis même si je mouline toujours :)
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Valeur / String qui semble être couper

Message 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)
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Re: Valeur / String qui semble être couper

Message 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..
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Valeur / String qui semble être couper

Message 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é.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Valeur / String qui semble être couper

Message par falsam »

Fonctionne aussi sous XP SP2.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Re: Valeur / String qui semble être couper

Message par jambon »

Ok, je vais tester sur mon autre ordinateur demain.
Je vous tient au courant mais donc apparament le code est ok.
jambon
Messages : 19
Inscription : lun. 23/juin/2014 16:01

Re: Valeur / String qui semble être couper

Message par jambon »

Je vient de tester à l'instant j'ai exactement le même soucis c'est à ne plus rien comprendre...
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Valeur / String qui semble être couper

Message par Micoute »

Bonsoir falsam, j'ai essayé ton code sur W7 et XP, ça ne fonctionne qu'avec W7 !
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Valeur / String qui semble être couper

Message 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)
Image

J'ai fermé la session puis ouverte à nouveau et notepad se lance quelques secondes après l'ouverture.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
PAPIPP
Messages : 534
Inscription : sam. 23/févr./2008 17:58

Re: Valeur / String qui semble être couper

Message 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+
Il est fort peu probable que les mêmes causes ne produisent pas les mêmes effets.(Einstein)
Et en logique positive cela donne.
Il est très fortement probable que les mêmes causes produisent les mêmes effets.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Valeur / String qui semble être couper

Message 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 ;)
Répondre