Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
817 connectés 

  FORUM HardWare.fr
  Programmation
  C

  Var environnement

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Var environnement

n°520985
AGA
La boîte à Bokeh!
Posté le 23-09-2003 à 08:53:45  profilanswer
 

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

mood
Publicité
Posté le 23-09-2003 à 08:53:45  profilanswer
 

n°520995
jagstang
Pa Capona ಠ_ಠ
Posté le 23-09-2003 à 09:13:20  profilanswer
 

Peut-être, je dis bien peut-être, qu'il faut voir du côté de la base de registre...

n°520997
LetoII
Le dormeur doit se réveiller
Posté le 23-09-2003 à 09:15:48  profilanswer
 

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.


---------------
Le Tyran
n°520998
jagstang
Pa Capona ಠ_ಠ
Posté le 23-09-2003 à 09:18:38  profilanswer
 

Code :
  1. int main(int argc, char **argv, char ** envp)
  2. {
  3.     for (int i=0 ; i<sizeof(envp) ; i++)
  4.         cout << envp[i] ;
  5.  
  6.   system("PAUSE" );
  7.   return 0;
  8. }


 
http://lfe.developpez.com/FAQ/C/?p [...] ironnement

n°521002
LetoII
Le dormeur doit se réveiller
Posté le 23-09-2003 à 09:22:51  profilanswer
 

JagStang a écrit :

Code :
  1. int main(int argc, char **argv, char ** envp)
  2. {
  3.     for (int i=0 ; i<sizeof(envp) ; i++)
  4.         cout << envp[i] ;
  5.  
  6.   system("PAUSE" );
  7.   return 0;
  8. }


 
http://lfe.developpez.com/FAQ/C/?p [...] ironnement


 
 :non: Ca doit pas marcher, sous win2000 chaque console a ses propres variables d'environement.


---------------
Le Tyran
n°521005
chrisbk
-
Posté le 23-09-2003 à 09:23:50  profilanswer
 

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

n°521006
chrisbk
-
Posté le 23-09-2003 à 09:24:31  profilanswer
 

LetoII a écrit :


 
 :non: Ca doit pas marcher, sous win2000 chaque console a ses propres variables d'environement.


 
ben ca lui rends les var d'environnement correspondant a la console dans laquelle le programme a ete lancé [:spamafote]

n°521007
LetoII
Le dormeur doit se réveiller
Posté le 23-09-2003 à 09:25:06  profilanswer
 

chrisbk a écrit :


 
ben ca lui rends les var d'environnement correspondant a la console dans laquelle le programme a ete lancé [:spamafote]


 
Oui, d'où pas de changement au niveau du système.


---------------
Le Tyran
n°521015
jagstang
Pa Capona ಠ_ಠ
Posté le 23-09-2003 à 09:36:33  profilanswer
 

C'est pas la réponse... une piste tout au plus... j'aurais du expliquer

n°521024
AGA
La boîte à Bokeh!
Posté le 23-09-2003 à 09:47:18  profilanswer
 

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 :)

mood
Publicité
Posté le 23-09-2003 à 09:47:18  profilanswer
 

n°521032
LetoII
Le dormeur doit se réveiller
Posté le 23-09-2003 à 09:55:02  profilanswer
 

AGA a écrit :

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 :)


 
Il doit y avoir un message à envoyer au système... Ca doit être un problème simillaire au changement des icônes.


---------------
Le Tyran
n°521158
El_gringo
Posté le 23-09-2003 à 12:21:12  profilanswer
 

AGA a écrit :


Donc windows fais un truc pour recharcher les variables, suites à modif, c'est ce petit bout qu'il me manque :)


 
Quand t'écris "Recharcher" pour "rechercher", c'est parce que t'as un accent ?

n°521162
Taz
bisounours-codeur
Posté le 23-09-2003 à 12:30:00  profilanswer
 

le sizeof ne fonctionne pas.
la manière de faire tout ça, c'est juste comme pour argv, on cherche le NULL final
 

Code :
  1. #include <stdio.h>
  2. int main(int argc, char *argv[], char *envp[])
  3. {
  4.   size_t i;
  5.   for (i=0; envp[i]!=NULL; i++)
  6.     {
  7.       puts(envp[i]);
  8.     }
  9.  
  10.   return 0;
  11. }

n°521313
AGA
La boîte à Bokeh!
Posté le 23-09-2003 à 14:05:28  profilanswer
 

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?  :sweat:

n°521982
AGA
La boîte à Bokeh!
Posté le 24-09-2003 à 11:17:09  profilanswer
 

:(

n°522091
antp
Super Administrateur
Champion des excuses bidons
Posté le 24-09-2003 à 12:55:36  profilanswer
 

El_gringo a écrit :


 
Quand t'écris "Recharcher" pour "rechercher", c'est parce que t'as un accent ?


 
moi j'avais cru que c'était plutôt pour dire "recharger" :D


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°522990
AGA
La boîte à Bokeh!
Posté le 25-09-2003 à 10:17:34  profilanswer
 

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?

n°522994
LetoII
Le dormeur doit se réveiller
Posté le 25-09-2003 à 10:24:03  profilanswer
 

non  [:spamafote]


---------------
Le Tyran
n°523129
AGA
La boîte à Bokeh!
Posté le 25-09-2003 à 12:58:47  profilanswer
 

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 :/
 
 

n°523130
chrisbk
-
Posté le 25-09-2003 à 12:59:40  profilanswer
 

ben tu le recupere dans ta boucle de message et tu le traite (?)

n°523182
El_gringo
Posté le 25-09-2003 à 14:16:52  profilanswer
 

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 :
  1. SendMessage (HWND_BROADCAST,WM_SETTINGCHANGE, ...);


 
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


Message édité par El_gringo le 25-09-2003 à 14:17:28
n°523233
chrisbk
-
Posté le 25-09-2003 à 15:04:26  profilanswer
 

ben nan ?
Si j'ai bien cpris son brol il veut savoir quand elles ont ete modifiées, cf
 

Citation :


Comment seuelemtn recharger les variables?  
 


n°523234
LetoII
Le dormeur doit se réveiller
Posté le 25-09-2003 à 15:06:24  profilanswer
 

chrisbk a écrit :

ben nan ?
Si j'ai bien cpris son brol il veut savoir quand elles ont ete modifiées, cf
 

Citation :


Comment seuelemtn recharger les variables?  
 


 


 
 :non:


---------------
Le Tyran
n°523235
El_gringo
Posté le 25-09-2003 à 15:08:41  profilanswer
 

chrisbk a écrit :

ben nan ?
Si j'ai bien cpris son brol il veut savoir quand elles ont ete modifiées, cf
 

Citation :


Comment seuelemtn recharger les variables?  
 




 
Ben oui. Il pense les avoir changées, mais apparement, windows ne "rafraichit" pas...

n°523243
AGA
La boîte à Bokeh!
Posté le 25-09-2003 à 15:17:21  profilanswer
 

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 :D
 
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  :p

n°523300
AGA
La boîte à Bokeh!
Posté le 25-09-2003 à 16:03:59  profilanswer
 

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!  ;)

n°523344
AGA
La boîte à Bokeh!
Posté le 25-09-2003 à 16:59:15  profilanswer
 

Code :
  1. #include <windows.h>
  2. int main (int argc, char *argv[])
  3. {
  4. int lParam;
  5. int wParam=0;
  6.     char *Buf="Environment";
  7.     unsigned long *aResult;
  8.  SendMessageTimeout(HWND_BROADCAST ,
  9.      WM_SETTINGCHANGE ,
  10.      wParam,
  11.      long(Buf),
  12.      SMTO_NORMAL ,
  13.      4000,
  14.      aResult);
  15. // Display windows lasterror if the result is an error.
  16.  if (aResult != 0)
  17.  {
  18.  // SysErrorMessage(aResult);
  19.  }
  20. }


 
Voilà qu'en pensez vous?
Je ne sais pas convertir la fonction Delphi SysErrorMessage.

n°523365
antp
Super Administrateur
Champion des excuses bidons
Posté le 25-09-2003 à 17:28:50  profilanswer
 

AGA a écrit :


Je ne sais pas convertir la fonction Delphi SysErrorMessage.


 
:??: il suffit d'afficher la chaîne que la fonction te renvoie, non ?
Sinon il y a aussi RaiseLastOSError();


Message édité par antp le 25-09-2003 à 17:29:33

---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  Var environnement

 

Sujets relatifs
Variables environnement + VBS[MySQL] variables d'environnement
[Latex] Environnement vide[PHP / JAVASCRIPT] Récupérer des variables d'environnement.
[VB6] Date environnement et recordset ouvert ou fermé ?environnement graphique ????
Vbscript et variables d'environnementDéveloppement en C++ WiFi et/ou TCPIP (environnement krosoft)?
[Access] Récupérer une variable d'environnementvariables d'environnement ac jdk1.4.1
Plus de sujets relatifs à : Var environnement


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR