[C++] Fonction System() erreur

Résolu
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. Modérateur
    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. Contributeur
      Est-ce que le nom du lien fini par .exe .com .bat ou .cmd ?
      1. ba mon raccourci ce termine par .exe vers une application en .exe
      2. Contributeur
        Et sans le start ?
        En donnant le chemin complet ?
      3. @dubceknon 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... )
      4. @dubcekca 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 ^^)
    2. 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
      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 ++