IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Exécuter un fichier avec 2 paramètres


Sujet :

C++

  1. #1
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Par défaut Exécuter un fichier avec 2 paramètres
    Bonjour, à tous, voilà je debute en C++ et j'ai un énorme soucis.

    J'ai fais ce petit programme qui est appelé par un .bat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    #include <stdlib.h>
    #include <iostream.h>
    #include <stdio.h>
    #include <windows.h> 
     
    using namespace std;
     
    void main()
    {
     
     
    	int system(const char *string);
    	int num;
    	char name[1000];
    	char file[]="C:\\rep\\filchier.exe";
     
    	system("CLS");
    	cout << "	Entrer le numero gagnant: ";
    	cin >> num;
    	printf("	Entrer le nom du gagnant: ");
    	cin >> name;
    	system("start %file %num %name");
     
    	/* SHELLEXECUTEINFO ExecuteInfo;    
    	memset(&ExecuteInfo, 0, sizeof(ExecuteInfo));
        
    	ExecuteInfo.cbSize       = sizeof(ExecuteInfo);
    	ExecuteInfo.fMask        = 0;                
    	ExecuteInfo.hwnd         = 0;                
    	ExecuteInfo.lpVerb       = "open";                      
    	ExecuteInfo.lpFile       = file;
    	ExecuteInfo.lpParameters = name;
    	ExecuteInfo.lpDirectory  = 0;
    	ExecuteInfo.nShow        = SW_SHOW;
    	ExecuteInfo.hInstApp     = 0;    
    	if(ShellExecuteEx(&ExecuteInfo) == FALSE)
    	{
    		 cout << "Erreur de lancement du fichier : "<< file << "\n";;
    	}else cout << "Lancement OK " << "\n"; */
     
    	system("PAUSE");
    }

    Mais voilà evidement çà ne marche pas comme çà mais vous voyez ce que je veux faire.
    Si certains d'entres vous peuvent m'aider merci d'avance !

  2. #2
    Invité
    Invité(e)
    Par défaut
    Hello Alban,

    Allons-y pas à pas.

    Citation Envoyé par alban92000 Voir le message
    void main()
    {
    int system(const char *string);
    Tu n'as pas besoin de déclarer cette fonction à cet endroit. Le corps d'une fonction n'est déjà pas un endroit recommandable pour une déclaration de fonction, et s'il s'agit d'une fonction standard, il suffit d'inclure le header associé: <cstdlib>.

    Citation Envoyé par alban92000 Voir le message
    int num;
    char name[1000];
    Il est préférable d'utiliser un std::string. Ici, tu supposes que 1000 caractères suffisent. Mieux vaut une solution qui n'a pas besoin de supposer quoi que ce soit.

    Citation Envoyé par alban92000 Voir le message
    system("CLS");
    Je ne suis pas certain que la commande CLS soit une commande du système. Je crois qu'il s'agit d'une commande interne au programme qui te permet d'entrer les lignes de commandes (cmd.exe). Il n'existe donc pas de "cls.exe", ce qui signifie que tu ne peux pas l'appeler avec system(). Tu as le même problème pour "start" et "pause" un peu plus loin.

    Citation Envoyé par alban92000 Voir le message
    system("start %file %num %name");
    Le compilateur ne fera pas par lui-même les substitutions comme tu les souhaites ici. Je te propose une autre solution:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
      std::stringstream ss;    // dans <sstream>
      // Le chemin de l'exécutable, entre guillemets.
      ss << "\"" << file << "\" ";
      // Les paramètres, avec "name" entre guillemets.
      ss << num << " \"" << name << "\"";
     
      system(ss.str().c_str());
    Je n'ai ni compilé, ni testé, mais le principe est là:
    - Tu n'as pas besoin de "start" pour lancer le programme
    - Tu dois faire la construction de la ligne de commande toi-même

    Bon courage,

    Carl

  3. #3
    Membre régulier
    Inscrit en
    Février 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2008
    Messages : 10
    Par défaut
    Merci beaucoup c'est super sympa de ta part de m'aidé je test çà ce soir !!
    encore un gros merci

Discussions similaires

  1. exécuter un jar avec des paramètres (php)
    Par malko.mad dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 23/02/2009, 13h00
  2. Exécuter un .exe avec des paramètres
    Par Coussati dans le forum Débuter
    Réponses: 8
    Dernier message: 01/02/2009, 20h26
  3. exécuter un fichier avec requêtes SQL
    Par nozostan dans le forum SQL
    Réponses: 2
    Dernier message: 07/12/2007, 15h40
  4. Réponses: 5
    Dernier message: 28/11/2007, 11h33
  5. [ API JDIC ] Ouvrir un fichier avec des paramètres
    Par macmanus dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 11/05/2007, 15h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo