Retrouver le chemin d'un exe

clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 - 13 juin 2007 à 11:38
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 - 14 juin 2007 à 16:42
Bonjour à tous,

J'ai un petit problème, supposont que les utilisateurs d'un programme X peuvent choisir l'emplacement de l'installation, et que mon programme Y veuille ouvrir l'exe du programme X, comment faire pour retrouver le chemin de l'.exe? (le processus peut-être lancé ou non).
J'ai cherché un peu partout et jai trouvé une solution si le processus est lancé, mais ca ne me convient pas car comment faire quand le processus X n'est pas lancé?

Merci  d'avance pour votre aide

17 réponses

SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 juin 2007 à 11:46
Hello,

Si ce n'est pas depuis tom programme, et donc que l'application peut être lancée ou non, le seul moyen, c'est de le mettre à un endroit fixe.

Ca peut être une Base de donnée, une clef de registre, ou un fichier.
Même si je n'aime pas toucher au registre, dans ton cas, c'est peut-être la solution la plus propre.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 juin 2007 à 11:52
Salut,
Généralement, dans ce genre de situations, le programme check le répertoire par défaut d'install et s'il ne trouve pas son bonheur, demande à l'utilisateur de spécifier le path où se trouve le fichier nécessaire. C'est à mon sens la manière la plus propre ;-)

<hr />
-Blog-
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 juin 2007 à 12:01
C'est vrai, les solutions les plus simples sont souvent les meilleures.
Mais comme je travaille avec des services ces derniers temps, j'ai tendance à oublier qu'on peut demander quelque chose à l'utilisateur. 

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
13 juin 2007 à 12:12
Effectivement je n'avais pas pensé à cette solution qui ets la base de registre...

Comment faire pour qu'au lancement de mon form donc dans l'évenement Form1_Load par exemple, mon programme aille lire l'emplacement du programme X dans la base de registre et l'enregistre dans la variable TextBox1 de mon programme?
0

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

Posez votre question
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
13 juin 2007 à 12:14
J'ai posté longuement désolé, quel méthode est la mieux selon vous?
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
13 juin 2007 à 12:21
Hello,

En principe, j'essaie autant que possible d'éviter de toucher au registre, non pas par peur , mais simplement parce que le .net ne devrait pas en avoir besoin.
C'est pour cette raison que j'ai mis "peut-être la solution la plus propre"

Donc, si ça ne pose pas de problèmes de demander le path à l'utilisateur, fais-le de cette manière.
Si tu veux automatiser au maximum, utilise quand même la base de registre.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 juin 2007 à 12:23
Les accès à la registry sont très simples, tu trouves des exemples partout comme par exemple ici.
En ce qui me concerne, je choisirais la solution de demander à l'utilisateur le path lors du tout premier démarrage du programme (puis tu stockes sa saisie dans un fichier xml par exemple).

<hr />
-Blog-
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
13 juin 2007 à 12:33
Merci pour vos réponses finalement je vais opter pour la solution du choix à l'utilisateur du path.

private void Form1_Load(object sender, EventArgs e)
{
    if (File.Exists("C:\\Program Files\\Repertoire\\programmex.exe) == true)
    {
       this.TextBox1.Text = "C:\\Program Files\\Repertoire\";
    }
    else
    {
       folderBrowserDialog1...
    }
}

J'ai essayé ceci mais j'aimerais plutot stocker dans un fichier .xml contenu dans mon exe comment faire? Est-ce correct mon code?
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
13 juin 2007 à 16:24
Après avoir essayé dans tous les sens je me rend compte que la propriété folderBrowserDialog1.Filter n'éxiste pas... Comment faire pour que l'utilisateur puisser choisir le repertoire ou il est contenu un "programmex.exe" et ne sauvegarder dans le fichier .xml que le répertoire du style ""C:\\Program Files\\Repertoire\" dans une variable?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
13 juin 2007 à 17:38
Tu peux utiliser un OpenFileDialog pour qu'il puisse browser sur son fichier.
Ensuite tu récupères le path sélectionné (path complet ou juste répertoire parent selon le besoin).

Pour l'écritre dans Xml, voire Serialization (XmlSerializer), XmlDocument/XmlWriter

<hr />
-Blog-
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
13 juin 2007 à 19:05
J'ai réussi à créer le code du OpenFileDialog mais je n'arrive pas à récupérer le repertoire parent et le stocker dans un .xml, une proposition? Merci beaucoup!
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
14 juin 2007 à 07:53
Hello,

Si tu as un OpenfileDialog ofd :

string parentDirectory=
null;

if (
ofd.
ShowDialog() ==
DialogResult.
OK)

   parentDirectory =
new DirectoryInfo(
ofd.
FileName).
Parent.
FullName;

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
14 juin 2007 à 11:49
Bonjour,

Pourquoi passer l'argument "null" à la variable parentDirectory?

Merci
0
SharpMao Messages postés 1024 Date d'inscription mardi 4 février 2003 Statut Membre Dernière intervention 7 juin 2010 69
14 juin 2007 à 12:01
Par habitude, j'initialise tout mes objets à null si je ne connais pas leur valeur, mais ce n'est pas vraiment nécessaire.

Amicalement, SharpMao

"C'est pas parce qu'ils sont nombreux à avoir tort qu'ils ont raison!"
(Coluche / 1944-1986 / Pensées et anecdotes)
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
14 juin 2007 à 15:32
Merci pour ta réponse SharpMao cela fonctionne, pour en revenir à la variable "parentDirectory" ici, quel est la meilleure méthode pour moi pour stocker ma variable et pouvoir la réutiliser n'importe ou dans le code? Le fichier .xml serait en plus de l'exe? ou serait compiler dans l'exe?
0
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 61
14 juin 2007 à 15:36
Les references type sont automatiquement initialisés avec null.Pour les values types, ça dépend (int 0; bool false, etc).

Le fichier xml est en plus de l'exe. (c'est la façon la plus simple et la plus logique à mon avis...)

<hr />
-Blog-
0
clubberzZ Messages postés 89 Date d'inscription vendredi 29 octobre 2004 Statut Membre Dernière intervention 3 décembre 2007 1
14 juin 2007 à 16:42
Le problème c'est que j"aimerais n'avoir aucun fichier à coter, le plus juducieux serait de faire avec la méthode textBox1 comme je l'avais cité? existe-t-il un autre moyen?
0
Rejoignez-nous