Ouverture d'une application sans utiliser le _spawn

Résolu
clad1986 Messages postés 11 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 19 mai 2011 - 31 août 2009 à 18:31
clad1986 Messages postés 11 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 19 mai 2011 - 1 sept. 2009 à 11:32
Bonjour à tou(te)s.

C'est mon premier post ici. J'espère que je pourrai vous détailler du mieux possible mon problème. Alors, voilà, j'utilise Microsoft Visual Studio .NET 2003 avec Windows XP Pro.
Dans mon source, je voudrai ouvrir une image en bitmap via l'application MSPaint. Pour cela, j'utilise une fonction _spawnv(int mode, const char *cmdname, const char *const *argv) où j'ai, à mon avis, correctement passé les paramètres.
L'application se lance uniquement si le chemin d'accès ne contient pas d'espace... ex : C:\projet\essai1\image.bmp
En revanche, lorsque le chemin d'accès contient un ou plusieurs espaces (ex : C:\Documents and Settings\projet\essai 1\nouveau test\image.bmp) , et même si la compilation du programme s'effectue, lors du lancement, un message d'erreur apparait et MS Paint ne se lance pas!

Il me semble que cela est du à la fonction _spawn qui est trop vieille et qui n'autorise pas un chemin avec des espaces (fonction tournant sur Win98 ou WinMe...). Avez-vous des suggestions? Pourriez-vous m'aider et connaitriez-vous une fonction qui fait la même chose que _spawn mais qui tolère les espaces dans le chemin d'accès ?

Merci d'avance, cordialement.


Julien

3 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
31 août 2009 à 19:01
Ajoute des doubles guillemets des 2 côtés du paramètre ...

---
VB.NET is good ... VB6 is better
3
clad1986 Messages postés 11 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 19 mai 2011
1 sept. 2009 à 11:32
Rebonjour,

Finalement, j'ai réussi à ouvrir l'application MS Paint, même avec un nom de chemin contenant un ou plusieurs espaces!
Merci ghuysmans99 pour ton aide, tu m'as bien mis sur la bonne voie ;)

Bonne journée.

Julien


PS : ligne de code tapée pour pouvoir ouvrir MS Paint :
_spawnl( _P_NOWAIT , Commande , "Arguments", "image.bmp");
3
clad1986 Messages postés 11 Date d'inscription lundi 31 août 2009 Statut Membre Dernière intervention 19 mai 2011
1 sept. 2009 à 09:33
Bonjour ghuysmans99, et à d'autres aussi...

Je viens de tester ce que tu m'as dit. En fait, pour pouvoir compiler sans erreur, il faut changer de fonction, c'est à dire utiliser un _spawnl au lieu d'un _spawnv.
Voir ici : _spawnl( _P_NOWAIT , Commande , "Arguments");
Après compilation, le programme généré se lance, mais affiche cette fois-ci une autre erreur Paint (apparemment il reconnaît maintenant les espaces) :
"C:\Documents and Settings\Bureau\Julien\projet en cours\test_01\Ä)¤¤¤¤.bmp contient un chemin non valide"...
Normalement, "Ä)¤¤¤¤.bmp" devrait s'intituler "image.bmp", mais ça fait des caractères vraiment bizarres!

Que faudrait-il faire pour parer ce problème? Pensez-vous que je dois donner comme argument à la fonction une taille max (ou une taille réservée bien définie)? L'erreur vient-elle d'autre part?

Merci d'avance,
Cordialement.


Julien
0
Rejoignez-nous