<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Lancer un processus et rediriger sa sortie]]></title><description><![CDATA[<p dir="auto">Dans ce petit tutoriel destiné au débutants, je vais vous montrer comment lancer un processus, et rediriger sa sortie.</p>
<p dir="auto">"cmd.exe" et la commande "tasklist" seront utilisé dans cet exemple, a vous de l'adapter selon vos besoins !</p>
<p dir="auto"><em>J'utiliserais le C#, mais vous pouvez le "traduire" en VB très facilement.</em></p>
<p dir="auto"><strong>Prérequis</strong></p>
<ul>
<li>Bases du C#</li>
<li>Créer un projet de type ConsoleApplication</li>
</ul>
<p dir="auto"><strong>Qu'est-ce qu'un processus ?</strong></p>
<p dir="auto">Pour simplifier, c'est le nom donné par Windows au exécutables qui sont entrain de tourner. (ex: chrome.exe |  cmd.exe | Skype.exe ....)</p>
<p dir="auto">Pour les voir il vous suffit de cliquer sur démarrer et puis d'entrer " taskmgr" (Task Manager).</p>
<p dir="auto"><strong><a href="http://msdn.microsoft.com/en-us/library/System.Diagnostics(v=vs.110).aspx" rel="nofollow ugc">System.Diagnostics</a></strong></p>
<p dir="auto">Ce namespace contient des structures/classes qui vont nous permettre d'interagir avec d'autres processus (et d'autres choses mais on ne va s'en préoccuper durant ce tutoriel)</p>
<p dir="auto">Pour l'importer:</p>
<pre><code>using System.Diagnostics; //en haut de votre fichier .cs
</code></pre>
<p dir="auto">On va maintenant procéder a la 1ère partie de ce tutoriel : Créer un processus. Pour cela, nous allons utiliser les classes <a href="http://msdn.microsoft.com/en-us/library/vstudio/System.Diagnostics.Process(v=vs.110).aspx" rel="nofollow ugc">Process</a> et <a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.processstartinfo(v=vs.110).aspx" rel="nofollow ugc">ProcessStartInfo</a></p>
<p dir="auto">On commence par créer une instance de la classe ProcessStartInfo comme ceci:</p>
<pre><code>ProcessStartInfo psi = new ProcessStartInfo
{
     FileName = "cmd.exe",   // Nom du processus (ici nous n'avons pas besoin de spécifier le chemin car cmd.exe est situé dans les dossiers du systeme.
     Arguments = "/c tasklist",  // Commande a exécuter, le /c dit a l’interpréteur de commande "exécute xxx commande et casse toi", tasklist est le nom de la commande qui permet de lister tout les processus actifs.
     RedirectStandardOutput = true,  // Pour dire qu'on va rediriger la sortie
     UseShellExecute = false,  // Dit a l'OS de démarrer le processus directement a partir de l’exécutable
};
</code></pre>
<p dir="auto">Puis on lance le processus  :</p>
<pre><code>Process p = Process.Start(psi); // Le processus se lance avec les informations de la classe ProcessStartInfo qu'on vient de créer.
</code></pre>
<p dir="auto">Pour récupérer la sortie (output) du processus, on utilise la propriété <a href="http://msdn.microsoft.com/en-us/library/vstudio/system.diagnostics.process.standardoutput(v=vs.110)" rel="nofollow ugc">Process.StandardOutput.ReadToEnd</a></p>
<pre><code>string output = p.StandardOutput.ReadToEnd(); // on le stocke dans une variable de type string
</code></pre>
<p dir="auto">Avant d'afficher la sortie sur notre console, nous allons attendre que le processus se termine, en spécifiant un timeout (durée maximum d'attente)</p>
<pre><code>p.WaitForExit(10000); // dix secondes
Console.WriteLine(output); //écrit la sortie sur notre console
Console.ReadKey(); //pause pour qu'on ai le temps de lire ce qui est sur notre console
</code></pre>
<p dir="auto"><strong>Épilogue</strong></p>
<p dir="auto">Voila, ce court tutoriel est terminé, j’espère qu'il aura aidé certains d'entre vous.</p>
<p dir="auto">Il y a  des millions d'autre choses possible, vous pouvez rediriger la sortie de votre console vers un fichier texte (en utilisant <a href="http://msdn.microsoft.com/en-us/library/system.console.setout(v=vs.110).aspx" rel="nofollow ugc">Console.SetOut</a> ), ou encore vers la console de Visual Studio. La seule limite est votre imagination.</p>
<p dir="auto">Questions/Commentaires/Critiques sont toujours les bienvenus, sur ce post ou en MP.</p>
<p dir="auto">Davy.</p>
<p dir="auto">PS: Sur QWERTY, désolé pour le manque d'accents.</p>
<p dir="auto">PS2: Les quelques lignes qui sont supposée être en gras ne le sont pas.</p>
]]></description><link>http://new.melinyel.net/topic/748/lancer-un-processus-et-rediriger-sa-sortie</link><generator>RSS for Node</generator><lastBuildDate>Thu, 21 May 2026 19:29:10 GMT</lastBuildDate><atom:link href="http://new.melinyel.net/topic/748.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 22 May 2014 17:23:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Lancer un processus et rediriger sa sortie on Fri, 23 May 2014 08:18:05 GMT]]></title><description><![CDATA[<p dir="auto">Bon tutoriel, merci de ton implication. <img src="http://new.melinyel.net/assets/plugins/nodebb-plugin-emoji/emoji/android/1f642.png?v=aa95655114f" class="not-responsive emoji emoji-android emoji--slightly_smiling_face" style="height:23px;width:auto;vertical-align:middle" title=":)" alt="🙂" /></p>
<p dir="auto">+1 rep.</p>
]]></description><link>http://new.melinyel.net/post/7923</link><guid isPermaLink="true">http://new.melinyel.net/post/7923</guid><dc:creator><![CDATA[Azad]]></dc:creator><pubDate>Fri, 23 May 2014 08:18:05 GMT</pubDate></item></channel></rss>