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 :

Ouverture d'une application externe


Sujet :

C#

  1. #1
    Membre averti
    Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut Ouverture d'une application externe
    Bonjour,

    je suis un petit nouveau dans le monde du .Net. Pour me faciliter la vie dans mon travail, je voudrait me créer un logiciel permettant d'automatiser mes tâches fréquentes.

    Pour celà, j'aimerais au clique sur un bouton pouvoir lancer un fichier (qui n'a pas l'extension .exe) qui s'ouvre avec Visual Studio (nomenclature Departement.Projet.Build)

    J'ai donc pour le moment une bête GUI avec un bouton qui dans le meilleur des mondes, au clique dessus me lancerait se fichier. Voici la méthode placée sur ce bouton:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
      String Chemin = "c:/Documents and Settings/UserMES/Mes documents/Visual Studio 2005/code/Solutions/";
          String fichier = "Mes.Tolerie.Build";
          String CheminComplet = System.IO.Path.Combine(Chemin, fichier);
          ProcessStartInfo fichierStartInfo = new ProcessStartInfo(CheminComplet);
          Process notepad = Process.Start(fichierStartInfo);
    Malgré celà, à chaque fois, j'obtiens: Le fichier spécifié est introuvable. J'ai déjà tenté plusieurs changements de nom de répertoire (mettre des \\ à la place des /, mettre le chemin et le répertoire dans une variable directement,...).
    A chaque fois la même exception.

    Pourtant, quand j'utilise le débuggeur et que je copie colle le chemin du fichier dans l'explorer, celui-ci se lance sans problème...
    Je me dis qu'une petite subtilité m'échappe mais laquelle?

    Pouvez-vous éclairer mon chemin?

  2. #2
    Membre averti
    Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Merci de ta réponse rapide,
    malheureusement j'ai déjà essayé cette méthode mais celà ne change rien

  3. #3
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Je vais faire une supposition, c'est le "Mes documents" qui doit coincer ! Ce nom est plus une sorte d'alias logiquement...

    Essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String directory = Path.Combine(Environment.GetEnvironmentVariable("CSIDL_DEFAULT_MYDOCUMENTS"), @"Visual Studio 2005\code\Solutions\");
    Dans la mesure où tu es bien logué en UserMES

  4. #4
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    essaie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    String directory = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
    , @"Visual Studio 2005\code\Solutions\");

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    +1 pour chamano, j'étais en train de tester et oué, sa solution fonctionne !

  6. #6
    Membre averti
    Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Touours le même soucis et la même exception.

    Voici le code de ma classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Diagnostics;
    using System.Text;
    using System.Windows.Forms;
    using System.IO;
     
    namespace IndusteelTools
    {
      public partial class Form1 : Form
      {
     
        public Form1()
        {
          InitializeComponent();
        }
     
        private void BtnLauncher_Click(object sender, EventArgs e)
        {
          Process P = Process.Start(Constantes.SOLUTIONPATH);
        }
     
        private void button1_Click(object sender, EventArgs e)
        {
          String directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"Visual Studio 2005\code\Solutions\");
          String fichier = "Mes.Tolerie.Build";
          String CheminComplet = System.IO.Path.Combine(directory, fichier);
          ProcessStartInfo sStartInfo = new ProcessStartInfo(CheminComplet);
          Process notepad = Process.Start(sStartInfo );
        }
      }
    }
    Merci de votre aide

  7. #7
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    Je viens de tester et ça marche.

    Tu es sur de ton chemin : Visual Studio 2005\code\Solutions\Mes.Tolerie.Build existe?

    quand tu lance le fichier Mes.Tolerie.Build à la main il se passe quoi?

  8. #8
    Membre averti
    Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Oui c'est le bon chemin puisque quand je le tape dans l'explorer, il m'ouvre bien mon fichier :/

    Quand je clique sur Mes.Tolerie.Build, il ouvre Visual Studio avec le projet associé...

    Je suis sous une machine virtuelle également mais j'imagine que ca n'influence pas le comportement d'une telle fonction

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Avril 2006
    Messages
    1 627
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 627
    Par défaut
    Testes si ton répertoire et ton fichier existent via File.Exist et Directory.Exist (surtout Directory, vu l'exception filenotfound sur le fichier).

  10. #10
    Membre averti
    Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    J'ai modifié mon code afin d'avoir 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
    15
    16
    17
     
          String directory = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), @"Visual Studio 2005\code\Solutions\");
          String file = "Mes.Tolerie.Build";
     
          if(Directory.Exists(directory)) {
            MessageBox.Show("Directory OK");
          }
     
          if (File.Exists(Path.Combine(directory, file)))
          {
            MessageBox.Show("File OK");
          }
          else {
            MessageBox.Show("File KO on path :" + Path.Combine(directory, file));
          }
     
          Process P = Process.Start(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments),@"Visual Studio 2005\code\Solutions\Mes.Tolerie.Build"));
    Le messageBox avec Directory OK s'affiche bien, file KO s'affiche bien également (et malheureusement).
    Seulement le fichier Path qu'il me donne correspond bien et est bon.
    Celà ne serait pas du à un problème de droit sur le fichier? Pourtant les users ont tout les droits dessus

  11. #11
    Membre émérite Avatar de chamamo
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    588
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 588
    Par défaut
    tu n'as pas oublié l'extension du fichier par hasard?

    fait directory.GetFiles (directori c'est ton dossier ou se trouve le fichier)

    pour lister tous les fichiers, tu auras le nom exact de ton fichier.

  12. #12
    Membre averti
    Profil pro
    Développeur .NET
    Inscrit en
    Septembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Septembre 2009
    Messages : 9
    Par défaut
    Ca marche, effectivement windows me caché l'extension du fichier, malgré le fait que je demande de l'afficher.

    Merci beaucoup pour vos réponses qui m'ont bien aidées

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

Discussions similaires

  1. [XL-2007] VBA: contrôle d'une application externe et ouverture boite de dialogue
    Par joker.benj dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 29/09/2010, 20h58
  2. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  3. Fermer une application externe
    Par jean tof dans le forum C++Builder
    Réponses: 2
    Dernier message: 02/05/2006, 16h18
  4. Réponses: 6
    Dernier message: 07/09/2005, 20h31
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

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