[C++] Fonction System() erreur

Résolu/Fermé
Signaler
Messages postés
22
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
12 novembre 2007
-
Messages postés
22
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
12 novembre 2007
-
bienvenue à toi,

j'ai un petit probleme sur un debut de programme( et oui les problèmes commencent déjà !! )

mon code me permet de lancer une executable sans probleme , par exemple: pour lancer paint

#include "stdlib.h" 
int main()
{

system("start mspaint") ;

return 0;
}

jusque là pas de prob , mais maintennt jai besoin de lancer de la meme manière un raccourci d'une excecutable. et la c'est le drame.Il ne trouve pas mon raccourci.J'ai bien verifié :

- le raccourci apel bien l'executable
- le raccourci est dans le bon dossier ( system32)

la fonctio system() doit fonctionner seulement avec les applications , alors j'aimerais savoir si il y a une astuce pour faire fonctionner system() à partir d'un raccourci

Merci pour les futur reponses ^^

4 réponses

Messages postés
30527
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
19 janvier 2022
7 269
Il faut doubler tes '\'.
Il faut mettre le chemin complet pour que ton programme c++ se lance depuis n'importe quel répertoire.
Si l'exécutable appelé n'est pas "standard" il est souhaitable de passer son chemin en paramètre au programme c++.

Exemple : sous linux l'exécutable "df", situé dans le répertoire /bin affiche les différentes partitions :
#include <cstdlib>

int main(){
    system("/bin/df");
    return 0;
}

(si tu fais du C++ utilise plutôt le header <cstdlib> que <stdlib.h> qui est le header du C.)
On compile et on exécute :
(mando@cenedra) (~) $ g++ -W -Wall -o plop.exe plop.cpp
(mando@cenedra) (~) $ ./plop.exe
Sys. de fich.        1K-blocs       Occupé Disponible Capacité Monté sur
/dev/sda5              8054588   4975247   2670087  66% /
/dev/sda7             33949601   5892080  28057521  18% /home
/dev/sda1               120204      7448    112756   7% /mnt/win_
/dev/sda2             31254456  17918956  13335500  58% /mnt/win_c

Si ton exécutable est par exemple c:\windows\truc.exe ca donne :
#include <cstdlib>

int main(){
    system("c:\\windows\\truc.exe");
    return 0;
}

Bonne chance
1
Messages postés
18410
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
18 janvier 2022
5 533
Est-ce que le nom du lien fini par .exe .com .bat ou .cmd ?
0
Messages postés
22
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
12 novembre 2007
1
ba mon raccourci ce termine par .exe vers une application en .exe
0
Messages postés
18410
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
18 janvier 2022
5 533
Et sans le start ?
En donnant le chemin complet ?
0
Messages postés
22
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
12 novembre 2007
1 >
Messages postés
18410
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
18 janvier 2022

non pas mieux , si je met le chemin complet il me lance tout les caractères d'echapement

c:\w----\s----\o-----

( \w \s \o etc... )
0
Messages postés
22
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
12 novembre 2007
1 >
Messages postés
18410
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
18 janvier 2022

ca y est j'ai réglé le probleme de caractères d'échappement

c:\\..........

ne pas oubliez de mettre deux backslash ^^, c'est pas tout mais apres je compile mais j'ai encore un probleme comme si mon .exe n'existait pas ( encor eu peu de recherche et ca devrait etre resolu ^^)
0
Messages postés
22
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
12 novembre 2007
1
voilà fesons un point :

après avoir réglé quelque erreur de \\ ,voilci le probleme suivant.

voila mon code.


#include "stdlib.h" 

int main()
{

system("C:\\dossier1\\dossier2\\truc.exe ouvertureporte") ;

return 0;

}


truc c'est mon application , mais elle a comme option ( obligatoire ) le nom ouvertureporte,qui me permet de lancer une macro nommer ainsi.

j'ai tester cette ligne de commande dans cmd et ca marche , mais l'execution dans mon programme me fait une erreur d'execution
0
Messages postés
22
Date d'inscription
jeudi 7 juin 2007
Statut
Membre
Dernière intervention
12 novembre 2007
1
ca y est !!!!

voilà la solution


#include "stdlib.h" 

int main()
{
system("C:\\ouvre.exe.lnk") ;

return 0;
}



sans oublier que mon raccourci à pour cible (C:\dossier1\dossier2\truc.exe ouvertureporte)
avec le .lnk ( extension de raccourci ) mon programme se lance et ma porte s'ouvre ^^

merci à tous ++
0