Ouverture d'une application sans utiliser le _spawn [Résolu]

Signaler
Messages postés
11
Date d'inscription
lundi 31 août 2009
Statut
Membre
Dernière intervention
19 mai 2011
-
clad1986
Messages postés
11
Date d'inscription
lundi 31 août 2009
Statut
Membre
Dernière intervention
19 mai 2011
-
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

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
Ajoute des doubles guillemets des 2 côtés du paramètre ...

---
VB.NET is good ... VB6 is better
Messages postés
11
Date d'inscription
lundi 31 août 2009
Statut
Membre
Dernière intervention
19 mai 2011

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");
Messages postés
11
Date d'inscription
lundi 31 août 2009
Statut
Membre
Dernière intervention
19 mai 2011

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