[C++] Fonction System() erreur
Résolu
xenonex
Messages postés
22
Statut
Membre
-
xenonex Messages postés 22 Statut Membre -
xenonex Messages postés 22 Statut Membre -
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
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 ^^
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 ^^
Configuration: Windows XP Firefox 1.5.0.12
4 réponses
-
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 -
Est-ce que le nom du lien fini par .exe .com .bat ou .cmd ?
-
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 -
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 ++