Aller directement au contenu
  • Catégories
  • Récent
  • Mots-clés
  • Populaire
  • Web
  • Utilisateurs
  • Groupes
Habillages
  • Clair
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Sombre
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Défaut (Aucun habillage)
  • Aucun habillage
Réduire
Melinyel

Melinyel

  1. Accueil
  2. Programmation
  3. Développement de logiciels
  4. C#
  5. Lancer un processus et rediriger sa sortie

Lancer un processus et rediriger sa sortie

Planifié Épinglé Verrouillé Déplacé C#
2 Messages 2 Publieurs 3.3k Vues
  • Du plus ancien au plus récent
  • Du plus récent au plus ancien
  • Les plus votés
Répondre
  • Répondre à l'aide d'un nouveau sujet
Se connecter pour répondre
Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
  • D Hors-ligne
    D Hors-ligne
    davydavek
    a écrit sur dernière édition par
    #1

    Dans ce petit tutoriel destiné au débutants, je vais vous montrer comment lancer un processus, et rediriger sa sortie.

    "cmd.exe" et la commande "tasklist" seront utilisé dans cet exemple, a vous de l'adapter selon vos besoins !

    J'utiliserais le C#, mais vous pouvez le "traduire" en VB très facilement.

    Prérequis

    • Bases du C#
    • Créer un projet de type ConsoleApplication

    Qu'est-ce qu'un processus ?

    Pour simplifier, c'est le nom donné par Windows au exécutables qui sont entrain de tourner. (ex: chrome.exe |  cmd.exe | Skype.exe ....)

    Pour les voir il vous suffit de cliquer sur démarrer et puis d'entrer " taskmgr" (Task Manager).

    System.Diagnostics

    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)

    Pour l'importer:

    using System.Diagnostics; //en haut de votre fichier .cs
    

    On va maintenant procéder a la 1ère partie de ce tutoriel : Créer un processus. Pour cela, nous allons utiliser les classes Process et ProcessStartInfo

    On commence par créer une instance de la classe ProcessStartInfo comme ceci:

    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
    };
    

    Puis on lance le processus  :

    Process p = Process.Start(psi); // Le processus se lance avec les informations de la classe ProcessStartInfo qu'on vient de créer.
    

    Pour récupérer la sortie (output) du processus, on utilise la propriété Process.StandardOutput.ReadToEnd

    string output = p.StandardOutput.ReadToEnd(); // on le stocke dans une variable de type string
    

    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.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
    

    Épilogue

    Voila, ce court tutoriel est terminé, j’espère qu'il aura aidé certains d'entre vous.

    Il y a  des millions d'autre choses possible, vous pouvez rediriger la sortie de votre console vers un fichier texte (en utilisant Console.SetOut ), ou encore vers la console de Visual Studio. La seule limite est votre imagination.

    Questions/Commentaires/Critiques sont toujours les bienvenus, sur ce post ou en MP.

    Davy.

    PS: Sur QWERTY, désolé pour le manque d'accents.

    PS2: Les quelques lignes qui sont supposée être en gras ne le sont pas.

    C# dev

    github.com/DavyWk

    1 réponse Dernière réponse
    0
    • AzadA Hors-ligne
      AzadA Hors-ligne
      Azad
      a écrit sur dernière édition par
      #2

      Bon tutoriel, merci de ton implication. 🙂

      +1 rep.

      Administrateur du forum.

      Contactez-moi par message privé ou par mail.

      1 réponse Dernière réponse
      0

      Bonjour ! Vous semblez intéressé par cette conversation, mais vous n’avez pas encore de compte.

      Marre de refaire défiler les mêmes messages ? Créez un compte pour retrouver votre position, recevoir des notifications des nouvelles réponses, sauvegarder vos favoris et voter pour les messages que vous appréciez.

      Grâce à votre participation, ce message peut devenir encore meilleur 💗

      S'inscrire Se connecter
      Répondre
      • Répondre à l'aide d'un nouveau sujet
      Se connecter pour répondre
      • Du plus ancien au plus récent
      • Du plus récent au plus ancien
      • Les plus votés


      • Se connecter

      • Connectez-vous ou inscrivez-vous pour faire une recherche.
      Powered by NodeBB Contributors
      • Premier message
        Dernier message
      0
      • Catégories
      • Récent
      • Mots-clés
      • Populaire
      • Web
      • Utilisateurs
      • Groupes