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

GTK+ avec C & C++ Discussion :

lancer un executable


Sujet :

GTK+ avec C & C++

  1. #1
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut lancer un executable
    re bonjour, c'est encore moi!!!

    j'ai un probleme lors de l'execution dans .exe a partir de mon programme.

    j'ai utilisé la commande suivante:

    system("C:\\notepad.exe");

    notepad s'ouvre correctement mais il y a aussi une fenetre cmd.exe qui s'ouvre, comment puis-je la faire disparaitre ou meme l'empêcher de s'ouvrir???

  2. #2
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par gy0m76
    re bonjour, c'est encore moi!!!

    j'ai un probleme lors de l'execution dans .exe a partir de mon programme.

    j'ai utilisé la commande suivante:

    system("C:\\notepad.exe");

    notepad s'ouvre correctement mais il y a aussi une fenetre cmd.exe qui s'ouvre, comment puis-je la faire disparaitre ou meme l'empêcher de s'ouvrir???
    Il suffit d'utiliser les fonction de la glib qui sont faites pour ça : Spawning Processes

  3. #3
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    et laquelle de ces fonctions dois-je utiliser??

  4. #4
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Par défaut
    Citation Envoyé par gy0m76
    et laquelle de ces fonctions dois-je utiliser??
    ça dépend de tes besoins.

    La plus proche de la fonction system est g_spawn_command_line_sync donc seul le premier paramètre est obligatoire (!= NULL).

  5. #5
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    je souhaite juste ouvrir un fichier .exe en cliquant sur un bouton

    j'ai essayer ceci

    g_spawn_command_line_sync("C:\\notepad.exe", GError **error);

    erreur dans la compilation
    syntax error before "GError"

  6. #6
    Invité
    Invité(e)
    Par défaut
    Tu peut pas faire ca, faut apprendre à te servir d'une fonction !
    Tu dois créer le GError avant de le passer !

  7. #7
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    je l'est créer le GError

    GError *error = NULL;

  8. #8
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par gy0m76
    je l'est créer le GError

    GError *error = NULL;
    Il te manque 3 arguments et en plus l'adresse de la structure d'erreur se passe de cette manière: &error. Au pire, les arguments manquants tu peux les passer à NULL mais il faut tout de même les transmettres à la fonction.

    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    g_spawn_command_line_sync("C:\\notepad.exe", NULL, NULL, NULL, &error);
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  9. #9
    Membre confirmé
    Inscrit en
    Novembre 2006
    Messages
    151
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 151
    Par défaut
    lorsque je tape cette commande, la fenetre cmd.exe n'apparait plus, mais le .exe que je cherche a ouvrir n'apparait pas non plus!!!

    EDIT: Finallement c bon ca marche, il faut juste que l'executable soit dans le meme répertoire que le premier et l'on tape la commande suivante:

    g_spawn_command_line_sync("Projet1.exe", NULL, NULL, NULL, &error);

    Merci pour votre aide

    ++

  10. #10
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par gy0m76
    lorsque je tape cette commande, la fenetre cmd.exe n'apparait plus, mais le .exe que je cherche a ouvrir n'apparait pas non plus!!!
    As-tu testé si ton pointeur vers GError est bien différent de NULL et testé le retour de la fonction ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    #include <glib/gprintf.h>
     
    gboolean ret = FALSE;
     
    ...
     
    ret = g_spawn_command_line_sync("C:\\notepad.exe", NULL, NULL, NULL, &error);
     
    if (ret == FALSE && error != NULL)
    {
       g_printf ("%s\n", error->message);
       g_error_free (error);
    }
    Comme ca tu en connaîtra la cause !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

  11. #11
    Rédacteur
    Avatar de Franck.H
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2004
    Messages
    6 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Service public

    Informations forums :
    Inscription : Janvier 2004
    Messages : 6 951
    Par défaut
    Citation Envoyé par gy0m76
    lorsque je tape cette commande, la fenetre cmd.exe n'apparait plus, mais le .exe que je cherche a ouvrir n'apparait pas non plus!!!

    EDIT: Finallement c bon ca marche, il faut juste que l'executable soit dans le meme répertoire que le premier et l'on tape la commande suivante:

    g_spawn_command_line_sync("Projet1.exe", NULL, NULL, NULL, &error);

    Merci pour votre aide

    ++
    Pas forcément, tu peux lancer un exécutable qui peut se situer n'importe où, moi je viens de tester avec un programme qui se trouve dans un autre répertoire soit /usr/bin/gedit et pas de soucis !

    Quant on utilise la structure GError, c'est pour avoir un message explicite sur l'erreur s'il s'en produit une, si tu ne vérifie ni le retour de la fonction et ni la validité de ton pointeur error, tu peux laisser l'argument à NULL car je ne vois pas l'interêt d'en mettre un alors mais c'est tellement plus pratique de l'utiliser, surtout quand ca marche pas !
    Mon Site
    Ma bibliothèque de gestion des chaînes de caractères en C

    L'imagination est plus importante que le savoir. A. Einstein

    Je ne répond à aucune question technique par MP, merci d'avance !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOS]Lancer un executable en tache de fond
    Par raptor70 dans le forum Windows
    Réponses: 1
    Dernier message: 27/10/2005, 13h54
  2. Lancer l'exécution d'un autre programme
    Par Neitsa dans le forum Linux
    Réponses: 3
    Dernier message: 21/05/2005, 23h39
  3. Réponses: 5
    Dernier message: 15/07/2004, 23h28
  4. Réponses: 2
    Dernier message: 22/04/2004, 13h28
  5. Lancer un executable à partir d'un exe
    Par Invité dans le forum MFC
    Réponses: 4
    Dernier message: 26/01/2004, 12h55

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