[C++] Fonction System() erreur

Résolu
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

#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

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 943
     
    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
  2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
     
    Est-ce que le nom du lien fini par .exe .com .bat ou .cmd ?
    0
    1. xenonex Messages postés 22 Statut Membre 1
       
      ba mon raccourci ce termine par .exe vers une application en .exe
      0
    2. dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention   5 660
       
      Et sans le start ?
      En donnant le chemin complet ?
      0
      1. xenonex Messages postés 22 Statut Membre 1 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
      2. xenonex Messages postés 22 Statut Membre 1 > dubcek Messages postés 18627 Date d'inscription   Statut Contributeur Dernière intervention  
         
        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
  3. xenonex Messages postés 22 Statut Membre 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
  4. xenonex Messages postés 22 Statut Membre 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