Lancement d'un fichier EXE impossible. [Résolu]

1ModdingMaster 30 Messages postés jeudi 7 juillet 2011Date d'inscription 8 septembre 2014 Dernière intervention - 19 juil. 2014 à 01:28 - Dernière réponse : 1ModdingMaster 30 Messages postés jeudi 7 juillet 2011Date d'inscription 8 septembre 2014 Dernière intervention
- 20 juil. 2014 à 18:18
Bonjour je reviens vers vous car j'ai un petit problème, sûrement au niveau de mon code. Lorsque je clique sur un bouton présent sur l'application, je souhaite lancer l'exécution d'un autre programme déjà compilé (fichier EXE), en utilisant cette technique :

System.Diagnostics.ProcessStartInfo FileEditBDD = new System.Diagnostics.ProcessStartInfo();

FileEditBDD.FileName = "exe/edit_bdd.exe";

System.Diagnostics.Process.Start(FileEditBDD);


Ainsi ce fichier "edit_bdd.exe" se trouve dans un dossier nommé "exe" se trouvant lui-même à la racine du dossier où se situe le programme de départ.

Malheureusement cela ne marche pas, lorsque je presse le bouton pour lancer "edit_bdd.exe", une fenêtre d'erreur apparait me disant qu'il ne trouve pas ce fameux "edit_bdd.exe". Alors j'ai essayé de changer le répertoire, ainsi j'ai placé "edit_bdd.exe" là où se situe le programme principal et là ça marche, cependant je souhaite tout de même le lancer depuis le dossier "exe", j'y tiens.

Y a-t-il quelque chose que j'aurais oublié dans mon code ?

Merci d'avance à celui qui me répondra.


NB : "exe/edit_bdd.exe" ne marche pas, par contre quand je souhaite exploiter un morceau de musique se trouvant par exemple dans "wav/music.wav" ça marche, le son est bien présent. Bizarre ! Peut être que cela provient d'un niveau de protection Windows ? Merci.
Afficher la suite 

Votre réponse

6 réponses

Whismeril 12031 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 septembre 2018 Dernière intervention - 19 juil. 2014 à 13:26
0
Merci
Bonjour
si tu travailles sur windows, le répertoire c'est \ et non /.

Le caractère \ dans un string est interprété comme le caractère d'échappement, par exemple \t vaut tabulation.
Pour écrie une adresse, il faut échapper \ par lui-même, donc "exe\\edit_bdd.exe", une façon de simplifier est de mettre @ avant le string, ainsi le compilateur sait qu'il s'agit d'une adresse @"exe\edit_bdd.exe"
Commenter la réponse de Whismeril
1ModdingMaster 30 Messages postés jeudi 7 juillet 2011Date d'inscription 8 septembre 2014 Dernière intervention - 20 juil. 2014 à 01:16
0
Merci
Bonjour et merci encore une fois Whismeril c'est gentil de ta part, cette technique fonctionne. Par contre du coup quand je garde mon ancienne technique avec "wav/music.wav" ça marche bien que je n'utilise pas l'antislash. Étonnant, mais bon je laisse ainsi.

Par contre j'ai une autre question toujours le même sujet, si je reprend "edit_bdd.exe" qui est maintenant dans le dossier "exe" mais que je lui fait appeler certaines ressources comme des images ou des sons que j'utilise aussi dans le logiciel principal, j'ai une erreur me disant qu'il ne trouve pas ces ressources. J'ai écrit ceci comme code de Sound.Location ou d'Image.Location :

"../wav/music.wav"


Ça ne marchait pas alors j'ai utilisé ta technique :

@"..\wav\music.wav"


Et ça ne marche toujours pas ! Quand je suivais les cours de réseau on m'a appris que le double point permettait de retourner au précédent répertoire et là mes ressource se trouvent dans un dossier "wav" juste en dessous du dossier "exe".

N'est-ce pas le bon code ?

Merci de ta réponse Whismeril.
Commenter la réponse de 1ModdingMaster
Whismeril 12031 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 septembre 2018 Dernière intervention - 20 juil. 2014 à 10:00
0
Merci
Bonjour, pour les .. je ne sais pas si C# reconnait cette séquence.
Par contre tu peux utiliser Application.StartupPath, en remplaçant le dernier répertoire "exe", par "wav\\music.wav":
string monChemin = Application.StartupPath.Replace("exe", "wav\\music.wav");

Commenter la réponse de Whismeril
1ModdingMaster 30 Messages postés jeudi 7 juillet 2011Date d'inscription 8 septembre 2014 Dernière intervention - 20 juil. 2014 à 14:19
0
Merci
Bonjour Whismeril, n'ayant pas très bien compris ta technique j'ai essayé de voir toutes les possibilités, avec mon ami google j'ai trouvé qu'à la place de (..) on pouvait utiliser (~) en C#, mais le résultat fut sans succès, alors je me suis dit qu'au lieu de (..) si j'utilisais (.), au cas où, et puis finalement c'est ça. Du coup encore une fois sujet résolu, j'ai du mal à y croire car j'étais à peu près sûr que le double point (..) était utilisé pour remonter un dossier et le point unique (.) pour rester à la racine même.

@".\wav\music.wav"
@".\img\btn_button_p.png"


Merci de ton aide quand même, ça m'a placé sur la bonne voie je pense.
Whismeril 12031 Messages postés mardi 11 mars 2003Date d'inscriptionContributeurStatut 22 septembre 2018 Dernière intervention - 20 juil. 2014 à 14:45
Et bien, tu m'aura appris un truc!

Ma méthode repose sur la classe Application qui retourne tout un tas de données sur ton programme en cours de fonctionnement.
La propriété StartUpPath retourne le répertoire d'ou l'appli a démarré
1ModdingMaster 30 Messages postés jeudi 7 juillet 2011Date d'inscription 8 septembre 2014 Dernière intervention - 20 juil. 2014 à 18:18
Pour le nombre de fois que tu m'aura aidé depuis mon inscription...
Commenter la réponse de 1ModdingMaster

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.