[visual basic] changement de variables d'environnement en broadcoast (pour tous processsus)

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 668 fois - Téléchargée 27 fois

Contenu du snippet

Ce code permet de changer une ou plusieurs variable(s) d'environnement sous windows 2000 pour l'ensemble des applications d'un poste sans rebooter.

>> Il ne faut pas utiliser l'API : SetEnvironmentVariable, car celle-ci, ne fait que de changer la valeur de la ou des variable(s) d'environnement pour un 1 seul processus.<<

Le but de ce code est de changer la ou les variables d'environnement pour tous les processus de windows sans rebooter. Pour cela il faut modifier la base de registre au niveau de : "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" (sous Win2000) et par suite d'envoyer un message en BroadCoast à tout l'os pour lui spécifier le changement de variables.

On utilise l'api : Private Declare Function SendMessage Lib "user32"

Source / Exemple :


'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()
dim tmp as string

'Chaine du path
tmp = "SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\ESSBASE6\BIN;C:\ESSBASE6\API\Redist;c:\sys\ora8i\bin;c:\sys\orawinnt\bin;C:\Sys\Pcom\;C:\Program Files\IBM\Trace Facility\;C:\PROGRA~1\CONTINUUS\CCM51\BIN;C:\ARBORPATH\bin"

'Modifie la base de registre de windows (DonnerValeur est un fonction de modification de d'un clé de registre que vous pouvez retrouver ici )
Call DonnerValeur(0, "SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "ARBORPATH", "C:\ARBOR")
Call DonnerValeur(0, "SYSTEM\CurrentControlSet\Control\Session Manager\Environment", "Path", tmp)

'Message en Broadcoast pour l'envoie du changement à tous les processus de windows concernant cette modification
Call SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, "Environment")

End Sub

Conclusion :


Remerciement aux personnes du forum qui m'on permis de m'aiguiller dans cette voie.

A voir également

Ajouter un commentaire Commentaires
Messages postés
371
Date d'inscription
samedi 1 juin 2002
Statut
Membre
Dernière intervention
17 juin 2013

Je crois qu'on le saura jamais !
Quand on poste on poste tout ou rien !
Messages postés
1
Date d'inscription
vendredi 19 mai 2006
Statut
Membre
Dernière intervention
19 mai 2006

c est quoi exactement la fonction "donnervaleur"?
merci
Messages postés
521
Date d'inscription
mardi 24 décembre 2002
Statut
Membre
Dernière intervention
11 septembre 2008
5
Tres interressant cette notion de broadcast via SendMessage et surtout cela peut etre utile pour des changements linguistiques par exemple ( a tester ).

10/10

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.