Variable d'environnement
Résolu
heliconius
Messages postés
539
Date d'inscription
Statut
Membre
Dernière intervention
-
heliconius Messages postés 539 Date d'inscription Statut Membre Dernière intervention -
heliconius Messages postés 539 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Variable d'environnement
- Vba range avec variable ✓ - Forum VB / VBA
- Vba excel sélectionner une plage de cellules variable ✓ - Forum VB / VBA
- Syntaxe VBA Sheets.Range avec Range variable ✓ - Forum VB / VBA
- Range avec une Variable ✓ - Forum VB / VBA
- Variable objet ou variable de bloc with non définie - Forum VB / VBA
2 réponses
Bonjour,
Si tu cherches à conserver le contenu d'une variable après fermeture du programme, tu peux sans doute l'enregistrer dans un fichier, as-tu cherché dans cette direction?
Si tu cherches à conserver le contenu d'une variable après fermeture du programme, tu peux sans doute l'enregistrer dans un fichier, as-tu cherché dans cette direction?
Bonjour,
merci pour ta réponse.
En fait, quand on insère une clef USB elle peut prendre pour lettre F: ou H: ou K: selon les disques déjà existants sur la machine où elle est placée.
J'ai appris comment récupérer, par un exécutable réalisé en C, la lettre du lecteur à partir duquel l'exécutable est lancé. Le tout, maintenant, est de compléter ce programme en C pour placer cette lettre parmi les autres variables d'environnement comme si, à la main, j'avais tapé : set USBDRIVE=G: et ensuite, une fois exécuté, le programme s'arrête en laissant cette variable qui pourra être utilisée par d'autres programmes déjà existants et qui ne sont pas conçus pour aller chercher cette lettre dans un fichier mais dans les variables d'environnement.
J'espère ne pas avoir été confus dans mon explication.
merci pour ta réponse.
En fait, quand on insère une clef USB elle peut prendre pour lettre F: ou H: ou K: selon les disques déjà existants sur la machine où elle est placée.
J'ai appris comment récupérer, par un exécutable réalisé en C, la lettre du lecteur à partir duquel l'exécutable est lancé. Le tout, maintenant, est de compléter ce programme en C pour placer cette lettre parmi les autres variables d'environnement comme si, à la main, j'avais tapé : set USBDRIVE=G: et ensuite, une fois exécuté, le programme s'arrête en laissant cette variable qui pourra être utilisée par d'autres programmes déjà existants et qui ne sont pas conçus pour aller chercher cette lettre dans un fichier mais dans les variables d'environnement.
J'espère ne pas avoir été confus dans mon explication.
Salut heliconius,
Sous Windows, c'est compliqué. C'est résumé là : Environment Variables
Avec l'API Windows, tu peux utiliser SetEnvironmentVariable, mais cela ne pourra avoir un effet que dans le processus qui lance cette fonction et ses processus fils.
Si tu veux que le changement soit permanent, tu dois insérer la variable dans le registre à
Tu fais cela avec RegCreateKeyEx et SendMessage.
De cette façon, les nouveaux processus lancés par explorer.exe, même non créés (lancés) par ton application y auront accès. Cependant, cela ne sera (probablement.. à tester) pas le cas du cmd.exe dans lequel tu auras éventuellement lancé ton programme (car il a été lancé *avant*) à moins de rebooter ton ordinateur, ou d'exécuter un .bat dans le terminal ouvert modifiant l'environnement pour ce cmd.exe.
Dal
Sous Windows, c'est compliqué. C'est résumé là : Environment Variables
Avec l'API Windows, tu peux utiliser SetEnvironmentVariable, mais cela ne pourra avoir un effet que dans le processus qui lance cette fonction et ses processus fils.
Si tu veux que le changement soit permanent, tu dois insérer la variable dans le registre à
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environmentet envoyer un message
WM_SETTINGCHANGEavec l'option "Environment".
Tu fais cela avec RegCreateKeyEx et SendMessage.
De cette façon, les nouveaux processus lancés par explorer.exe, même non créés (lancés) par ton application y auront accès. Cependant, cela ne sera (probablement.. à tester) pas le cas du cmd.exe dans lequel tu auras éventuellement lancé ton programme (car il a été lancé *avant*) à moins de rebooter ton ordinateur, ou d'exécuter un .bat dans le terminal ouvert modifiant l'environnement pour ce cmd.exe.
Dal
Merci encore une fois pour cette réponse complète.
Je pensais toujours à mon projet de MySQL Portable sur clef USB.
Une fois ma clef insérée et son menu mis en place, plutôt que redéfinir les fichiers ini seulement à l'ouverture du terminal, j'avais pensé intégrer ce programme de réécriture des ini lors du processus de mise en place du menu et, tant qu'à faire, au cas où, écrire dans une variable d'environnement la lettre du lecteur pour ne plus avoir besoin de la rechercher.
Mais je me rends compte, comme tu dis, que ça risque d'être pour moi un brin compliqué :)
De toutes façons, je crois qu'avec Windows, c'est toujours compliqué ! :)
Soyons modeste et contentons-nous de ce qu'on a.
En tout cas, merci et je clos le sujet.
Je pensais toujours à mon projet de MySQL Portable sur clef USB.
Une fois ma clef insérée et son menu mis en place, plutôt que redéfinir les fichiers ini seulement à l'ouverture du terminal, j'avais pensé intégrer ce programme de réécriture des ini lors du processus de mise en place du menu et, tant qu'à faire, au cas où, écrire dans une variable d'environnement la lettre du lecteur pour ne plus avoir besoin de la rechercher.
Mais je me rends compte, comme tu dis, que ça risque d'être pour moi un brin compliqué :)
De toutes façons, je crois qu'avec Windows, c'est toujours compliqué ! :)
Soyons modeste et contentons-nous de ce qu'on a.
En tout cas, merci et je clos le sujet.