lucky hal
Messages postés22Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention 4 février 2008
-
26 févr. 2007 à 19:16
lucky hal
Messages postés22Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention 4 février 2008
-
27 févr. 2007 à 11:50
Bonjour,
J'ai un problème de mise à jour d'une variable d'environnment, mon but est de la changer (Jusque là pas de soucis), mais ensuite, les softs que je lance doivent la prendre en compte et là le bas blèsse, je m'explique :
Je me suis rendu compte que quand j'ouvrais les propriétes du système->avancés->variables d'environnement et que je cliquais sur OK, windows faisais quelque chose et que là ma variable etais partout, j'ai donc voulu faire un test avec un code inspirer du site :
Public
Class Form1
'API
Private
Declare
Function SendMessage
Lib
"user32" _
Alias
"SendMessageA" (
ByVal hwnd
As
Long, _
ByVal wMsg
As
Long,
ByVal wParam
As
Long, _
ByVal lParam
As
String)
As
Long
'CONSTANTE
Private
Const WM_SETTINGCHANGE = &H1A
Private
Const HWND_BROADCAST = &HFFFF&
Private
Sub changement()
'Modifie la base de registre de windows
Dim cle, cletemp, msg
As
String
Dim i
As
Integercle =
"HKEY_LOCAL_MACHINE\SYSTEM\ControlSet00"
For i = 1
To 9
Step 1cletemp = cle + i.ToString +
"\Control\Session Manager\Environment"
If
My.Computer.Registry.GetValue(cletemp, _
"TrCatiaPath",
Nothing)
Is
Nothing
Thenmsg = cletemp +
" non trouver !!"MsgBox(msg)
Elsemsg = cletemp +
" OK !!"MsgBox(msg)
My.Computer.Registry.SetValue(cletemp,
"TrCatiaPath",
"c:\test")
End
If
Next
'Message en Broadcoast pour l'envoie du changement à tous les processus de windows concernant cette modificationcle =
"HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment"
My.Computer.Registry.SetValue(cle,
"TrCatiaPath",
"c:\test2")
Call SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
"Environment")
End
Sub
Private
Sub Form1_Load(
ByVal sender
As System.Object,
ByVal e
As System.EventArgs)
Handles
MyBase.Loadchangement()
End
SubEnd
Class
Mon problème est un soucis de signature a l'appel de SendMessage, pourtant mes paramètres sont correct il me semble....
Donc avant que mon Boss m'etripe, quelqu'un aurrais une solution pour faire la même chose que Windows quand je clique sur OK dans les variables d'environnment ?
PS : J'utilise VB 2005 Express Edition
A voir également:
"Php variables" "build date" "php version 4.4.6" "server api"
Julien237
Messages postés883Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention 3 mars 20097 26 févr. 2007 à 19:35
Salut,
Héhé, tu n'es pas le premier à te faire avoir... Les Long de vb6 deviennent des Integer en .Net, donc dans la déclaration de ton SendMessage, remplace les Long par des Integer (éventuellement des IntPtr si ce sont des pointeurs, mais des Integer devraient de toutes façons convenir).
lucky hal
Messages postés22Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention 4 février 2008 27 févr. 2007 à 11:50
DIEU exite et il es sur ce site !!!!!!
Bon alors, effectivement si je remplace les long par des integer, j'ai pas de soucis de signature, mais il ne se passe rien, par contre en utlisant Environnment.SetEnvironment là ca marche...Je change donc la valeur de ma variable, puis j'ouvre un cmd, je fais un echo de ma var et joie ca marche....
Encore Merci de ce dépannage express....
Je vais enfin pouvoir faire un joli launcher pour ces programmes qui ne gèrent pas bien leur propre config, c'est mon BOSS qui va être heureux...