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

Windows Forms Discussion :

[C# 2.0] Comment rediriger la sortie standard console ProcessWindowStyle.Hidden ?


Sujet :

Windows Forms

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 25
    Points : 25
    Points
    25
    Par défaut [C# 2.0] Comment rediriger la sortie standard console ProcessWindowStyle.Hidden ?
    Chers amis developpeurs,
    Je developpe en C# framework 2.0 une appli windows graphique qui utilise des programmes externes en mode console ... j'aimerais pouvoir d'une part masquer la console (ProcessWindowStyle.Hidden) mais également récupérer les affichages fournis par les programmes afin de les afficher par exemple dans un gridview ou autre ....

    Mon probleme est le suivant !
    - J'arrive à masquer la console, j'arrive à récupérer les affichages en redirigeant la sortie standard vers un string mais je n'arrive pas à faire les 2 en même tps cad récupérer les affichages d'une console masquée ....

    Auriez vous une solution à me proposer ?

    Merci d'avance !!

  2. #2
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Peux-tu nous montrer ton code qui paramètre le processus avant de l'executer ?
    Pour le bien de ceux qui vous lisent, ayez à coeur le respect du forum et de ses règles

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 25
    Points : 25
    Points
    25
    Par défaut
    Désolé de répondre si tard ! Voilà la solution que j'ai pu apporter à mon problème (source d'inspiration : http://jab.developpez.com/tutoriels/...synchrone/#L-B)


    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
    /// <summary>
    /// Procédure qui lance le programme console en mode invisible
    /// dans un thread
    /// </summary>
    static int launchHiddenProg(string outputDepository)
    {
                _hiddenProcess= new Thread(new ThreadStart(readOutput));
                int exitCode;
                // on crée le thread de lecture des infos
                ProcessStartInfo processInfo = new ProcessStartInfo("mon_prog.exe");
                processInfo.Arguments = "Les arguments de la ligne de commande";
                // on déroute la sortie standard
                processInfo.UseShellExecute = false;
                processInfo.CreateNoWindow = true;
                processInfo.RedirectStandardOutput = true;
                _hiddenProcess= new Process();
                _hiddenProcess.StartInfo = processInfo;
                // on utilise l'événement pour savoir quand le processus est terminé
                _hiddenProcess.EnableRaisingEvents = true;
                _hiddenProcess.Exited += new System.EventHandler(ProcessEnded);
                _hiddenProcess.Start();
                // on démarre le thread de lecture
                _threadInfoReader.Start();
                _hiddenProcess.WaitForExit();
                // Après le close, les infos sur le processus ne seront plus
                // disponible. La mémoire allouée pour conserver ces infos
                // est rendue disponible
                exitCode = _hiddenProcess.ExitCode;
                _hiddenProcess.Close();
                return exitCode;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    /// <summary>
    /// Procédure qui lit la dernière ligne de la sortie standard du programme
    /// invisible lancé par la procédure launchHiddenProg tant que le processus
    /// n'est pas terminé
    /// </summary>private static void readOutput()
    {
                while (!_hiddenProcess.HasExited)
                {
                    Console.WriteLine(hiddenProcess.StandardOutput.ReadLine());
                }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /// <summary>
    /// Méthode appelée lorsque l'évenement Exited du processus
    /// _hiddenProcess est lancé ! cf. 
    _hiddenProcess.EnableRaisingEvents = true;
    _hiddenProcess.Exited += new System.EventHandler(ProcessEnded);
    /// </summary>
    private static void ProcessEnded(object sender, System.EventArgs e)
    {
                Console.WriteLine("Process Ended");
    }
    Voilà ! Si vous avez une meilleure solution je suis près à prendre !

    Merci

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 19/09/2007, 16h51
  2. Réponses: 1
    Dernier message: 29/06/2007, 02h26
  3. Rediriger une sortie standard vers le presse-papier du bureau
    Par Schmorgluck dans le forum Applications et environnements graphiques
    Réponses: 5
    Dernier message: 13/04/2007, 23h15
  4. rediriger la sortie standard vers un textarea
    Par gromite dans le forum Composants
    Réponses: 9
    Dernier message: 10/05/2004, 11h07
  5. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23

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