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 :

Lancer un exécutable depuis un programme C#


Sujet :

C#

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut Lancer un exécutable depuis un programme C#
    Bonjour,
    je suis sur un projet qui me demande de lancer une application depuis mon programme. Je sais comment lancer mon programme, mais ce qui m'amène à vous écrire, c'est que lorsque je lancer mon application depuis mon programme, il arrête de fonctionner. J'ai vérifier, le code d'erreur proviens de Windows. Mais, lorsque je démarre l'application par Windows, sans passer par mon programme, il fonctionne très bien.
    Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    private void lancement()
    {
       if (jeu.cheminapp != "##0001_0000##")
         Process.Start(Enviroment.GetDirectory+jeu.cheminapp);
       else
         erreur.MSG("##0001_0000##");
    }
    Où "##0001_0000##" est un code d'erreur interne au programme et erreur.MSG est une sortie d'erreur pour le projet.

    Si vous pouvez m'expliquer pourquoi mon application arrête de fonctionner, je vous en remerciais,
    Jack234

  2. #2
    Membre éclairé
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Septembre 2011
    Messages
    610
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2011
    Messages : 610
    Points : 713
    Points
    713
    Par défaut
    A ce que j'ai compris tu veux lancer un programme externe, mais ton appli gèle lorsque tu le lance!
    Dans ce cas la Essai ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    public Thread LancerProg;
     
    if (jeu.cheminapp != "##0001_0000##")
    {
    LancerProg = new Thread(Lancement);
    LancerProg.Start();
    }
     
     
    private void Lancement()
    {
    Process.Start(Enviroment.GetDirectory+jeu.cheminapp);
    }

  3. #3
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Si c'est un plantage, est-ce que tu as vérifié avec un point d'arrêt ce que vaut : Enviroment.GetDirectory+jeu.cheminapp.

    Sinon préfère l'utilisation de la méthode Combine :
    Code c# : Sélectionner tout - Visualiser dans une fenêtre à part
    System.Path.Combine(Environment.CurrentDirectory, jeu.cheminapp)

    Tu remarqueras que j'ai utilisé Environment.CurrentDirectory et non GetDirectory qui n'existe pas. (peut-être une erreur de frappe...)

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Le plantage provient de Windows. Mon application ne gèle pas. C'est lorsque l'application externe démarre par le billet de Windows. C'est a ce moment qu'un message qui me dit que le logiciel arrête de fonctionner apparaît.

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Et sinon concernant mon message ?

    Citation Envoyé par binoo
    est-ce que tu as vérifié avec un point d'arrêt ce que vaut : Enviroment.GetDirectory+jeu.cheminapp.
    Si le chemin du fichier que tu fournis est incorrect, tu auras un plantage. Donc la première chose à faire consiste à vérifier ce que tu donnes à Process.Start.

    A mon avis, il y a des chances que l'erreur vienne de là car tu dis pouvoir lancer ton programme de manière classique :
    Citation Envoyé par Jack234
    Mais, lorsque je démarre l'application par Windows, sans passer par mon programme, il fonctionne très bien.

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2010
    Messages : 58
    Points : 52
    Points
    52
    Par défaut
    Voici le code que j'exécute pour une .exe ou 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
    public static void ShellExecute(string process_,string workingDirectory_, string args_)
            {
                ProcessStartInfo psi = new ProcessStartInfo(process_)
                {
                    UseShellExecute = true,
                    RedirectStandardOutput = false,
                    RedirectStandardInput = false,
                    RedirectStandardError = false,
                    CreateNoWindow = true,
                    WorkingDirectory = workingDirectory_,
                    Arguments = args_
                };
                Process.Start(psi);
            }
    Dans process-, tu mets le chemin complet de ton fichier (c/:dossier/fichier.extension), workingDirectory_ est le répertoire d'exécution (c:/dossier) et les arguments, ca dépend de ton bat/exe; il peut être à string.empty si tu n'en as pas.

  7. #7
    Expert éminent
    Avatar de StringBuilder
    Homme Profil pro
    Chef de projets
    Inscrit en
    Février 2010
    Messages
    4 170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chef de projets
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2010
    Messages : 4 170
    Points : 7 422
    Points
    7 422
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jack234 Voir le message
    C'est lorsque l'application externe démarre par le billet de Windows.
    Je l'avais encore jamais vue celle là

    C'est "biais"

    Sinon, plus sérieusement, j'ai l'impression que personne n'arrive à savoir ce qui plante :

    Ton programme à toi (qu'on va appeler "MON_PROGRAMME_A_MOI") ou l'application que tu tentes de démarrer ? (qu'on va appeler "L'APPLICATION_EXTERNE")

    J'ai l'impression que c'est L'APPLICATION_EXTERNE qui plante au démarrage, et non MON_PROGRAMME_A_MOI, c'est bien ça ?

    Car si c'est le cas, tout le monde est en train de te répondre sur l'inverse.

    Si c'est bien ça, il faudrait qu'on en sâche plus sur L'APPLICATION_EXTERNE, qui semble ne vouloir être démarrée que par explorer.exe et non un autre programme.

    J'ai déjà eu ce cas, mais pas moyen de me rappeler le pourquoi du comment, et encore moins comment j'avais résolu le problème.
    Un truc qui me met la puce à l'oreille, serait que L'APPLICATION_EXTERNE est un programme qui a besoin de tourner en mode compatibilité, et que MON_PROGRAMME_A_MOI tente de le lancer en mode réel.

    Si c'est le cas, essaie de faire un raccourci vers L'APPLICATION_EXTERNE, et modifie son onglet "compatibilité".
    Dans MON_PROGRAMME_A_MOI, au lieu de lancer le programme *.EXE, lance plutôt le raccourci *.LNK pour voir ce que ça donne, mais ça me semble mort d'avance

    Tu peux aussi tenter de lancer "cmd.exe" avec en argument le binaire de L'APPLICATION_EXTERNE, ça devrait éventuellement faire la même chose, au détail près qu'une fenêtre de commande indésirable va s'ouvrir... Peut-être essayer la même chose en lançant "explorer.exe" et en argument le binaire de L'APPLICATION_EXTERNE.

    -- Edit : Bon, avec EXPLORER.EXE ça marche pas.

    -- Edit 2 : Avec CMD.EXE, ça pourrait marcher.

    Essaie de lancer la ligne de commande suivante :

    cmd.exe /c <chemin vers le binaire de L'APPLICATION_EXTERNE>

    Utilise pour ça le code de shini86161, qui permet de passer des arguments au programme qu'on démarre.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Je vous remerci de vos réponses, mais, sans savoir ce qui c'est passé, le problème s'est résolu.

    Merci pour les piste de solution, je vais les retenir pour la prochaine fois.

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 31/08/2008, 16h33
  2. Lancer un jar depuis mon programme
    Par jojodu31 dans le forum Langage
    Réponses: 5
    Dernier message: 02/07/2008, 15h49
  3. Lancer un script depuis un programme Java
    Par loulag07 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 06/05/2008, 14h51
  4. Lancer un exécutable depuis un label OnClick
    Par User Name dans le forum Débuter
    Réponses: 3
    Dernier message: 08/01/2008, 21h27
  5. [C#] Lancer un événement depuis le programme
    Par epc dans le forum Windows Forms
    Réponses: 4
    Dernier message: 06/10/2006, 18h53

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