Probleme de CreateProcess sous dev C++

Signaler
Messages postés
92
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
16 janvier 2007
-
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
-
Bonjour,

J'ai un petit probleme de CreateProcess sour dev c++ que je n'ai pas avec le meme code en compilant sous visual :

sous visual pour spawner un cmd je fais :
CreateProcess(NULL, LPTSTR("cmd.exe"), NULL, NULL, TRUE, 0, NULL, NULL, &_si, &_pi);
et ca marche tres bien.
La meme ligne pour dev c++ fait crasher le programme.
si je fais :
CreateProcess(LPTSTR("cmd.exe"), NULL, NULL, NULL, TRUE, 0, NULL, NULL, &_si, &_pi);

ca ne crash pas mais ca ne fais rien.

Si quelqu'un a la ligne de code qui va bien ou des trick & tips pour m'aider....
Merci d'avance.
Jah bless my code

9 réponses

Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
9
Tu n'aurait pas inversé le premier et le deuxième paramètre par hasard ?
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
J'avais remarqué aussi mais je suppose que c'est une erreur dans le post.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
9
Je ne connaissait pas la macro LPTSTR. A quoi sert-elle ?
Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
LPSTR = char *
LPWSTR = unsigned short *
LPTSTR = LPSTR ou LPWSTR dépendant si UNICODE est définis ou non.

___________________________________________
Les plus grands esprits trouvent toujours une solution
Messages postés
92
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
16 janvier 2007

Non ce n'est pas une erreur dans le post. Je me suis mal exprimé :
J'ai mis cette ligne dans dev c++ (parce qu'elle marche sous visual) :
CreateProcess(NULL, LPTSTR("cmd.exe"), NULL, NULL, TRUE, 0, NULL, NULL, &_si, &_pi);
et elle fait carrément crasher le programme en compilant sous dev.
En tatonnant et en testant plein de trucs j'au que en mettant
CreateProcess(LPTSTR("cmd.exe"), NULL, NULL, NULL, TRUE, 0, NULL, NULL, &_si, &_pi);

ca ne crash pas, mais ca ne fait pas le createprocess sur le cmd.
Jah bless my code
Messages postés
92
Date d'inscription
jeudi 21 avril 2005
Statut
Membre
Dernière intervention
16 janvier 2007

en fait clairement, si quellqu'un a une source d'un createprocess qui marche avec dev c++...

Jah bless my code
Messages postés
746
Date d'inscription
vendredi 17 juin 2005
Statut
Membre
Dernière intervention
23 mai 2007
9
Utilise la macro TEXT ou _T à la place de LPTSTR, car je n'ai jamais vu cette macro, et je me demande si ce n'est pas ça...
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
Salut,

Le topic est vieux, mais bon...

Je cite la doc de CreateProcess :
<hr size= "2" width="100%" />The Unicode version of this function, <!----> CreateProcessW , can modify the contents of this string. Therefore, this parameter cannot be a pointer to read-only memory (such as a const variable or a literal string). If this parameter is a constant string, the function may cause an access violation.
<hr size ="2" width="100%" />Faut donc copier "cmd.exe" dans un tampon (par exemple : TCHAR* maCommande[20]) avec par exemple (aussi !) lstrcpy, puis passer le tampon à CreateProcess.
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
14
(Copier _T("cmd.exe") bien sûr)