Lancement d'un exe à partir d'un dossier spécifique [Résolu]

Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
- - Dernière réponse : babaOrhumette
Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
- 14 avril 2009 à 20:00
Bonjour,
Je débute dans la programmation c#. Je vais essayer d'être claire.

Mise en situation :
Je crée actuellement un petit programme simple, que j'appelle sisi.exe. Il permet d'ouvrir des fichiers et de les modifier.

Mon but :
Mais j'aimerai intégrer un bouton lanceur d'un executif : pouet.exe que je colle dans le même dossier que sisi.exe.

Mon code actuel : (qui ne me va pas)
void Button10Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("pouet.exe"); 
        }

Le code ci-dessus, lance bien l'executif pouet.exe si et seulement si ce dernier est bien dans le dossier où j'ai été chercher le dernier fichier.

Ce qui se passe :
Lorsque je lance mon programme sisi.exe et que j'appuie sur mon bouton10, pas de problème mon pouet.exe se lance.
Par contre, lorsque je lance sisi.exe, que j'ouvre un fichier et qu'ensuite j'appuie sur mon bouton10 : "Le fichier spécifique est introuvable". Là pas cool.

Ce que je voudrais :
J'aimerai que le bouton 10 aille toujours lancer le pouet.exe du dossier contenant sisi.exe (et non pas dans le dossier du dernier fichier ouvert).

En espérant avoir été précise, merci de vos éventuelles futures réponses.
Bonne

babaOrhum
Afficher la suite 

7 réponses

Meilleure réponse
Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
1
3
Merci
Pardon, le véritable code :

void Button10Click(object sender, EventArgs e)
        {

            System.Diagnostics.ProcessStartInfo myInfo = new System.Diagnostics.ProcessStartInfo();
            myInfo.FileName = "pouet.exe";
            myInfo.WorkingDirectory = Application.StartupPath;
            System.Diagnostics.Process.Start(myInfo);

            }

Résolu.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 219 internautes nous ont dit merci ce mois-ci

Commenter la réponse de babaOrhumette
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
30
0
Merci
Salut

Tu peux connaître l'emplacement de ton exécutable (en l'occurrence sisi.exe) via le premier argument de Environment.CommandLine (et ce même si tu as fait "ouvrir avec").
Il te suffit donc de faire quelques manipulations de string dessus pour obtenir
le premier argument puis la totalité du chemin d'accès moins le nom de ton exe (sisi.exe).
Alors, tu exécutes System.Diagnostics.Process.Start(chemin + @"\pouet.exe");

Krimog :
while (!(succeed = try())) ;
Commenter la réponse de krimog
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
30
0
Merci
Correction : il y a beaucoup plus simple :

Je crois que Application.StartupPath doit être exactement ce que tu veux.

Krimog :
while (!(succeed = try())) ;
Commenter la réponse de krimog
Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
1
0
Merci
Bonjour et merci de cette réponse rapide.

Le problème c'est que ce programme est dédié à plusieurs amis, chacun mettra ce dernier où il veut sur son pc.

Je pense que le bouton 10 devrait partir du dossier-mére contenant mon sisi.exe et mon pouet.exe, mais je n'y arrive pas. Il me faudrait une ligne du genre : OpenFileDialog1.RestoreDirectory = true;

void Button10Click(object sender, EventArgs e)
        {
                OFD4.RestoreDirectory = true;
                System.Diagnostics.Process.Start("pouet.exe");
               
            }
Mais ça ne fonctionne pas non plus, j'ai le même message d'erreur à savoir : "Le fichier spécifique est introuvable".

Si vous avez d'autres idées.

Merci d'avance.
Commenter la réponse de babaOrhumette
Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
1
0
Merci
Je pense avoir résolution mon pb, merci encore!

void Button10Click(object sender, EventArgs e)
        {

            System.Diagnostics.ProcessStartInfo myInfo = new System.Diagnostics.ProcessStartInfo();
            mypouet.FileName = "pouet.exe";
            mypouet.WorkingDirectory = Application.StartupPath;
            System.Diagnostics.Process.Start(mypouet);

            }

Bonne journée.
Commenter la réponse de babaOrhumette
Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
30
0
Merci
"chacun mettra ce dernier où il veut sur son pc"
=> J'avais bien compris, mais je n'ai rien de statique dans la solution que je t'ai fourni.
La première solution te permettait de trouver la valeur du chemin grâce à Environment.CommandLine (+ quelques traitements)
La deuxième te le donnait directement (Application.StartupPath);

Donc
string chemin = Application.StartupPath; // Ou le traitement de Environment.CommandLine
System.Diagnostics.Process.Start(chemin + @"\pouet.exe");

Merci donc de lire et tester les solutions qu'on te donne (car en l'occurrence les 2 fonctionnaient).

Krimog :
while (!(succeed = try())) ;
Commenter la réponse de krimog
Messages postés
104
Date d'inscription
mardi 14 avril 2009
Statut
Membre
Dernière intervention
7 avril 2019
1
0
Merci
Comme je vous l'ai écrit en premier post, je suis une bille et je débute. Je n'ai malheureusement pas reussie à faire votre première solution.
La soluce que j'ai trouvée est en partie grâce à votre seconde réponse.

Merci.
Commenter la réponse de babaOrhumette