Var environnement - C - Programmation
Marsh Posté le 23-09-2003 à 09:13:20
Peut-être, je dis bien peut-être, qu'il faut voir du côté de la base de registre...
Marsh Posté le 23-09-2003 à 09:15:48
JagStang a écrit : Peut-être, je dis bien peut-être, qu'il faut voir du côté de la base de registre... |
Les variables d'envirronements doivent effectivement être définies dans la base de registre (local machine + current user je pense). Cependant il doit falloir prévenir windows qu'elles ont été modifier.
Marsh Posté le 23-09-2003 à 09:18:38
Code :
|
http://lfe.developpez.com/FAQ/C/?p [...] ironnement
Marsh Posté le 23-09-2003 à 09:22:51
JagStang a écrit :
|
Ca doit pas marcher, sous win2000 chaque console a ses propres variables d'environement.
Marsh Posté le 23-09-2003 à 09:23:50
je pense qu'aga sait comment les recuperer au lancement de son programme mais pas comment savoir qu'il y a eu changement ni comment recup ces changements
Marsh Posté le 23-09-2003 à 09:24:31
LetoII a écrit : |
ben ca lui rends les var d'environnement correspondant a la console dans laquelle le programme a ete lancé
Marsh Posté le 23-09-2003 à 09:25:06
chrisbk a écrit : |
Oui, d'où pas de changement au niveau du système.
Marsh Posté le 23-09-2003 à 09:36:33
C'est pas la réponse... une piste tout au plus... j'aurais du expliquer
Marsh Posté le 23-09-2003 à 09:47:18
Les variables je sais les mettres.
Le blème?
Elles ne sont pas effectives!
Cad qu'un echo %toto% ,ne marche pas!
sauf si je force la recharge des var d'environnement (donc en passant par l'onglet et deux fois ok,ok)
ou si je me deconnecte reconnecte une fois.
Donc windows fais un truc pour recharcher les variables, suites à modif, c'est ce petit bout qu'il me manque
Marsh Posté le 23-09-2003 à 09:55:02
AGA a écrit : Les variables je sais les mettres. |
Il doit y avoir un message à envoyer au système... Ca doit être un problème simillaire au changement des icônes.
Marsh Posté le 23-09-2003 à 12:21:12
AGA a écrit : |
Quand t'écris "Recharcher" pour "rechercher", c'est parce que t'as un accent ?
Marsh Posté le 23-09-2003 à 12:30:00
le sizeof ne fonctionne pas.
la manière de faire tout ça, c'est juste comme pour argv, on cherche le NULL final
Code :
|
Marsh Posté le 23-09-2003 à 14:05:28
non,non, je dit bien recharger, prendre en compte les modifications, les mettres en mémoires.
JE ne sais pas si c'est bien claires?
Marsh Posté le 24-09-2003 à 12:55:36
El_gringo a écrit : |
moi j'avais cru que c'était plutôt pour dire "recharger"
Marsh Posté le 25-09-2003 à 10:17:34
Aucune idée sur le message envoyé par Windows? Lorsque l'on jette seulement un oeil à ses variables d'environnemnt et qu'on utilise le bouton OK?
sous 2000?
Marsh Posté le 25-09-2003 à 12:58:47
http://msdn.microsoft.com/library/ [...] iables.asp
ils disent ceci :
Calling SetEnvironmentVariable has no effect on the system environment variables. The user can add or modify system environment variables using the Control Panel. To programmatically add or modify system environment variables, add them to the HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment registry key, then broadcast a WM_SETTINGCHANGE message. This allows applications, such as the shell, to pick up your updates.
Par contre je comprends pas bien comment utiliser ce message
Marsh Posté le 25-09-2003 à 12:59:40
ben tu le recupere dans ta boucle de message et tu le traite (?)
Marsh Posté le 25-09-2003 à 14:16:52
chrisbk a écrit : ben tu le recupere dans ta boucle de message et tu le traite (?) |
Ha ben non, tu l'envois au contraire, pour signaler au système que t'as changé les settings, logique quoi!
Genre, je dirais qu'après avoir changé ce qu'on voulait dans la base de registre (là où l'a dit le truc de Mr AGA), on fait qqch comme:
Code :
|
Mais en fait, j'viens de lire la doc de WM_SETTINGCHANGE, y a tout ce qu'il faut. Apparement, utiliser SystemParametersInfo, en spécifiant SPIF_SENDCHANGE dans un paramètre
Marsh Posté le 25-09-2003 à 15:04:26
ben nan ?
Si j'ai bien cpris son brol il veut savoir quand elles ont ete modifiées, cf
Citation : |
Marsh Posté le 25-09-2003 à 15:06:24
chrisbk a écrit : ben nan ?
|
Marsh Posté le 25-09-2003 à 15:08:41
chrisbk a écrit : ben nan ?
|
Ben oui. Il pense les avoir changées, mais apparement, windows ne "rafraichit" pas...
Marsh Posté le 25-09-2003 à 15:17:21
oui windows il ne sait pas qu'elle on changé
donc faut lui dire : "Hey les gars ya des nouvelles var d'environnement".
Bon apriori faut que j'envoie un message WM_SETTINGCHANGE
comme le C je ne connais pas
Je pense à ceci
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, Wparam, null)
wparam je penses le remplacer par ceci :
SystemParametersInfo(???; 0, null, SPI_SENDCHANGE)
par contre le premier paramètre uiactions
bah ya pas ce que je veux dans la liste
Jsuis aps bon je sais
Marsh Posté le 25-09-2003 à 16:03:59
Je penses avoir trouvé qqchose d'interessant :
http://community.borland.com/artic [...] 54,00.html
D'ailleurs ça me fait remarquer que j'ai mal lu la doc msdn...
Send messagetimeout!
Marsh Posté le 25-09-2003 à 16:59:15
Code :
|
Voilà qu'en pensez vous?
Je ne sais pas convertir la fonction Delphi SysErrorMessage.
Marsh Posté le 25-09-2003 à 17:28:50
AGA a écrit : |
il suffit d'afficher la chaîne que la fonction te renvoie, non ?
Sinon il y a aussi RaiseLastOSError();
Marsh Posté le 23-09-2003 à 08:53:45
Bonjour,
sous windows 2000, si on fait bouton droit sur le poste de travail, onglet avancé, bouton variables d'environnement.
Puis OK, OK.
Alors les variables d'environnement sont RECHARCHE en mémoire!
Comment seuelemtn recharger les variables?
en C?
Je ne cherche pas du code totu fait, juste une piste, le nom d'une fonction ou autre.
MSDN reste impénetrable sur ce point
merci