A voir également:
- Un petit problème en C
- Petit 1 comme ² ✓ - Forum Windows
- Excel trier du plus grand au plus petit - Guide
- Petit 3 ✓ - Forum Word
- Comment imprimer une photo en petit ✓ - Forum Photo numérique
- Comment imprimer en petit format - Guide
4 réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
30 janv. 2013 à 23:14
30 janv. 2013 à 23:14
Bonjour,
A ma connaissance, tu ne peux pas faire ça.
Le seul moyen que je vois est de parser le fichier .bat (sans l'exécuter, juste l'ouvrir).
Et tu recherches les SET avec (strstr()), et tu réalises l'affection en dynamique.
A ma connaissance, tu ne peux pas faire ça.
Le seul moyen que je vois est de parser le fichier .bat (sans l'exécuter, juste l'ouvrir).
Et tu recherches les SET avec (strstr()), et tu réalises l'affection en dynamique.
Bonjour et merci pour ta réponse,
J'ai bien essayé de faire
mais quand j'affiche les variables environnement via ce programme, les nouvelles que je viens de seter n'apparaissent pas.
Est ce que c'est bien comme ca qu'il faut s'y prendre ?
Cordialement
EDIT : j'ai aussi essayé avec
au début de mon main, mais je ne peux plus compiler car j'ai des erreurs, comme si ce putenv ne permettait plus aucunes déclarations de variables par la suite....
J'ai bien essayé de faire
system("set MaVariable=MonChemin");
mais quand j'affiche les variables environnement via ce programme, les nouvelles que je viens de seter n'apparaissent pas.
Est ce que c'est bien comme ca qu'il faut s'y prendre ?
Cordialement
EDIT : j'ai aussi essayé avec
putenv("MAVARIABLE=MONCHEMIN");
au début de mon main, mais je ne peux plus compiler car j'ai des erreurs, comme si ce putenv ne permettait plus aucunes déclarations de variables par la suite....
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
31 janv. 2013 à 19:12
31 janv. 2013 à 19:12
Je répète : ce n'est pas possible ce que tu souhaites faire...
putenv() c'est pour utiliser les variables d'environnement.
Cela ne te permettra pas de récupérer la valeur d'un set défini dans une console.
putenv() c'est pour utiliser les variables d'environnement.
Cela ne te permettra pas de récupérer la valeur d'un set défini dans une console.
Je ré-explique mon problème car je ne pense pas m'être bien exprimé.
Je développe un programme qui a besoin de variables d'environnement spécifiques.
Quand je lance un cmd et que je set mes variables, je lance ce programme dans cette même fênetre sans soucis.
Ce que je n'arrive pas à faire c'est débuguer ce programme dans mon visual studio. j'ai une erreur "Module not Found" avec des adresses mémoire.
Encore merci pour tes réponses
Je développe un programme qui a besoin de variables d'environnement spécifiques.
Quand je lance un cmd et que je set mes variables, je lance ce programme dans cette même fênetre sans soucis.
Ce que je n'arrive pas à faire c'est débuguer ce programme dans mon visual studio. j'ai une erreur "Module not Found" avec des adresses mémoire.
Encore merci pour tes réponses
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 844
1 févr. 2013 à 21:57
1 févr. 2013 à 21:57
Ben, ça dépend du module.
Mais d'une manière générale, il faut éviter d'utiliser la commande system() et compagnie. Il vaut mieux utiliserles fonctions du kernel.
Mais d'une manière générale, il faut éviter d'utiliser la commande system() et compagnie. Il vaut mieux utiliserles fonctions du kernel.
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié par [Dal] le 4/02/2013 à 09:38
Modifié par [Dal] le 4/02/2013 à 09:38
Salut Romain,
En fin de compte, c'est du C++ que tu fais, on dirait.
Le débogueur de visual studio te dira quelle ligne de code a généré cette exception.
https://loulou.developpez.com/tutoriels/cpp/debogueur-visual-studio/#L2.5
Dal
En fin de compte, c'est du C++ que tu fais, on dirait.
Le débogueur de visual studio te dira quelle ligne de code a généré cette exception.
https://loulou.developpez.com/tutoriels/cpp/debogueur-visual-studio/#L2.5
Dal
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
1 févr. 2013 à 10:58
1 févr. 2013 à 10:58
Salut Romain,
Sous Windows, tu peux fixer les variables d'environnement pour ton programme avec la fonction SetEnvironmentVariable :
https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-setenvironmentvariablea?redirectedfrom=MSDN
Il s'agit de les fixer pour le programme seulement, cette commande n'affecte pas les variables d'environnement du système.
Si ton programme appelle d'autres processus, ils peuvent hériter de l'environnement créé en le passant avec CreateProcess.
Tu as des exemples là :
https://docs.microsoft.com/en-us/windows/win32/procthread/changing-environment-variables?redirectedfrom=MSDN
Bien sûr, ce n'est pas du C standard, mais des API Windows.
Dal
Sous Windows, tu peux fixer les variables d'environnement pour ton programme avec la fonction SetEnvironmentVariable :
https://docs.microsoft.com/en-us/windows/win32/api/processenv/nf-processenv-setenvironmentvariablea?redirectedfrom=MSDN
Il s'agit de les fixer pour le programme seulement, cette commande n'affecte pas les variables d'environnement du système.
Si ton programme appelle d'autres processus, ils peuvent hériter de l'environnement créé en le passant avec CreateProcess.
Tu as des exemples là :
https://docs.microsoft.com/en-us/windows/win32/procthread/changing-environment-variables?redirectedfrom=MSDN
Bien sûr, ce n'est pas du C standard, mais des API Windows.
Dal
Bonjour Dal et merci pour ta réponse et ton complément d'informations. J'ai été voir les liens du MSDN, cependant cela n'a rien donné.
J'ai essayé
C'est le premier projet en C que je fais et j'avoue que je suis assez désorienté (habitué du VB.NET)
Encore merci,
Cordialement, Romain
J'ai essayé
SetEnvironmentVariable((LPCWSTR)"MaVariable", (LPCWSTR)"MaValeur");mais c'est san résultats.
C'est le premier projet en C que je fais et j'avoue que je suis assez désorienté (habitué du VB.NET)
Encore merci,
Cordialement, Romain
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
Modifié par [Dal] le 1/02/2013 à 15:13
Modifié par [Dal] le 1/02/2013 à 15:13
Salut,
Cet exemple se base sur le 2ème code MSDN sur cette page : https://docs.microsoft.com/en-us/windows/win32/procthread/changing-environment-variables?redirectedfrom=MSDN et fonctionne bien chez moi.
Il crée une variable d'environnement "MaVariable" à laquelle il affecte "MaValeur" avec SetEnvironmentVariable, et récupère le contenu de cette variable avec GetEnvironmentVariable.
Testé avec le compilateur MinGW.
Dal
Edit : contrôle d'erreur
Cet exemple se base sur le 2ème code MSDN sur cette page : https://docs.microsoft.com/en-us/windows/win32/procthread/changing-environment-variables?redirectedfrom=MSDN et fonctionne bien chez moi.
#include <stdio.h> #include <windows.h> #define BUFSIZE 4096 int main(void) { DWORD dwRet, dwErr; LPTSTR pszOldVal; if (!SetEnvironmentVariable("MaVariable", "MaValeur")) { printf("Error: cannot set the environment variable\n"); exit(EXIT_FAILURE); } pszOldVal = (LPTSTR) malloc(BUFSIZE * sizeof(TCHAR)); if (NULL == pszOldVal) { printf("Out of memory\n"); exit(EXIT_FAILURE); } dwRet = GetEnvironmentVariable("MaVariable", pszOldVal, BUFSIZE); if (0 == dwRet) { dwErr = GetLastError(); if (ERROR_ENVVAR_NOT_FOUND == dwErr) { printf("Environment variable does not exist.\n"); exit(EXIT_FAILURE); } else if (BUFSIZE < dwRet) { pszOldVal = (LPTSTR) realloc(pszOldVal, dwRet * sizeof(TCHAR)); if (NULL == pszOldVal) { printf("Out of memory\n"); exit(EXIT_FAILURE); } dwRet = GetEnvironmentVariable("MaVariable", pszOldVal, dwRet); if (!dwRet) { printf("GetEnvironmentVariable failed (%ld)\n", GetLastError()); exit(EXIT_FAILURE); } } } printf("found value: %s\n", pszOldVal); return 0; }
Il crée une variable d'environnement "MaVariable" à laquelle il affecte "MaValeur" avec SetEnvironmentVariable, et récupère le contenu de cette variable avec GetEnvironmentVariable.
Testé avec le compilateur MinGW.
Dal
Edit : contrôle d'erreur
Merci pour cette rapidité de réponse ! J'avais essayé ce code mais j'avais l'exception. La je viens de recoller le code dans un nouveau projet et.... Ca fonctionne !
Un grand merci à toi pour ton aide.
Il ne me reste plus qu'a essayer de comprendre le code car ca n'a pas l'air d'être une mince affaire ...
Un grand merci à toi pour ton aide.
Il ne me reste plus qu'a essayer de comprendre le code car ca n'a pas l'air d'être une mince affaire ...
[Dal]
Messages postés
6200
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
7 janvier 2025
1 097
1 févr. 2013 à 16:09
1 févr. 2013 à 16:09
Microsoft aime bien les noms de fonctions à rallonge, les variables nommées avec leurs types (notation hongroise), qui sont, en plus des types à la sauce Microsoft.., alors, toute cela parait un peu opaque. Mais c'est du C quand même :-)
Si tu as des questions sur ce code, n'hésites pas à les poser.
Dal
Si tu as des questions sur ce code, n'hésites pas à les poser.
Dal
kratosmindfreak
Messages postés
43
Date d'inscription
mercredi 23 janvier 2013
Statut
Membre
Dernière intervention
1 février 2013
30 janv. 2013 à 21:38
30 janv. 2013 à 21:38
bah tu peut utiliser ouvrir le fichier .bat on utilisant
FILE *fichier=fopen("nomfichier.bat","r")
puis tu peut faire ce que tu veux avec le fichier .bat
on manipulons seulement le pointeur fichier
FILE *fichier=fopen("nomfichier.bat","r")
puis tu peut faire ce que tu veux avec le fichier .bat
on manipulons seulement le pointeur fichier