Lancement d'un exe à partir d'un dossier spécifique

Résolu
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 - 14 avril 2009 à 11:00
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

7 réponses

babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
14 avril 2009 à 13:53
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.
3
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 51
14 avril 2009 à 11:39
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())) ;
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 51
14 avril 2009 à 12:02
Correction : il y a beaucoup plus simple :

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

Krimog :
while (!(succeed = try())) ;
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
14 avril 2009 à 12:12
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
14 avril 2009 à 12:32
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.
0
krimog Messages postés 1860 Date d'inscription lundi 28 novembre 2005 Statut Membre Dernière intervention 14 février 2015 51
14 avril 2009 à 13:58
"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())) ;
0
babaOrhumette Messages postés 104 Date d'inscription mardi 14 avril 2009 Statut Membre Dernière intervention 7 avril 2019 1
14 avril 2009 à 20:00
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.
0