Share via


Procédure pas à pas : gestion d'un processus Windows

Mise à jour : novembre 2007

Les procédures de cette section décrivent les différentes étapes intervenant dans la création d'un processus, la réponse à l'arrêt d'un processus et l'arrêt des processus. Dans la première section, vous créez une application Windows à l'aide de contrôles Button pour démarrer et arrêter un processus Notepad. Vous démarrez plusieurs instances de Notepad individuellement, puis les arrêtez en tant que groupe. Dans la seconde section, vous créez une application console qui énumère les processus s'exécutant sur votre ordinateur.

Pour plus d'informations sur l'utilisation du composant Process afin d'interagir avec les processus système, consultez Introduction à la surveillance et à la gestion des processus Windows.

Remarque :

Selon vos paramètres actifs ou votre édition, les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de celles qui sont décrites dans l'aide. Pour modifier vos paramètres, choisissez Importation et exportation de paramètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Pour créer votre application

  1. À partir de la boîte de dialogue Nouveau projet, créez une application WindowsVisual Basic, Visual C# ou Visual J#.

  2. Lorsque le concepteur Form1 est ouvert, cliquez sur l'onglet Windows Forms de la boîte à outils, puis ajoutez deux boutons au formulaire.

  3. Dans la fenêtre Propriétés, modifiez les propriétés suivantes :

    Contrôle

    Propriété

    Valeur

    Button1

    Name

    ButtonStart

     

    Text

    Démarrer le processus

    Button2

    Name

    ButtonStop

     

    Text

    Arrêter le processus

  4. Cliquez sur l'onglet Composant de la boîte à outils, puis faites glisser une instance du composant Process vers l'aire du concepteur.

  5. Nommez le composant myProcess.

Pour démarrer le processus Notepad.exe

  1. Dans la fenêtre Propriétés de l'instance du composant Process, développez la propriété StartInfo, puis affectez la valeur notepad.exe à la propriété FileName.

  2. Double-cliquez sur le bouton Démarrer pour accéder à l'éditeur de code, puis ajoutez le code suivant à l'événement ButtonStart_Click() :

    myProcess.Start
    
    myProcess.Start();
    
  3. Enregistrez tous les fichiers, puis générez et exécutez l'application.

  4. Cliquez à plusieurs reprises sur le bouton Démarrer le processus. Une instance distincte du processus Notepad (Bloc-notes) s'affiche à chaque clic.

    Note de sécurité :

    Dans un contexte partiellement fiable, le processus peut lever une exception SecurityException en raison de privilèges insuffisants. Pour plus d'informations, consultez Notions fondamentales de la sécurité d'accès du code.

  5. Fermez les applications Notepad.

  6. Fermez l'application Form1.

Pour fermer toutes les instances en cours du processus Notepad.exe

  1. Accédez à l'éditeur de code pour Form1.

  2. En mode Design, double-cliquez sur le bouton Arrêter pour accéder à la procédure ButtonStop_Click().

  3. Ajoutez le code suivant pour fermer les instances en cours du processus Notepad.

    Private Sub ButtonStop_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles ButtonStop.Click
       Dim myProcesses() As Process
       Dim instance As Process
       myProcesses = Process.GetProcessesByName("Notepad")
       For Each instance In myProcesses
          instance.CloseMainWindow()
          instance.Close()
       Next
    End Sub
    
    private void ButtonStop_Click(object sender, System.EventArgs e)
    {
       System.Diagnostics.Process[] myProcesses;
       myProcesses = 
          System.Diagnostics.Process.GetProcessesByName("Notepad");
       foreach (System.Diagnostics.Process instance in myProcesses)
       {
          instance.CloseMainWindow();
          instance.Close();
       }
    }
    
  4. Enregistrez tous les fichiers, puis générez et exécutez votre application.

  5. Démarrez plusieurs instances du processus Notepad en cliquant sur le bouton Démarrer le processus.

  6. Cliquez sur le bouton Arrêter le processus pour fermer immédiatement toutes les instances du processus Notepad en cours d'exécution.

  7. Fermez l'application Form1.

Dans la procédure suivante, vous allez figer votre code jusqu'au terme de l'exécution du processus.

Pour configurer le composant afin qu'il attende la fin de l'exécution du processus Notepad

  1. Accédez à l'éditeur de code pour Form1.

  2. Modifiez le code en ajoutant une ligne de code qui génère une pause avant la fermeture de chaque fenêtre.

    Private Sub ButtonStop_Click(ByVal sender As System.Object, _
       ByVal e As System.EventArgs) Handles ButtonStop.Click
       Dim myProcesses() As Process
       Dim instance As Process
       myProcesses = Process.GetProcessesByName("Notepad")
       For Each instance In myProcesses
          instance.CloseMainWindow()
          instance.WaitForExit(3000)
          instance.Close()
       Next
    End Sub
    
    private void ButtonStop_Click(object sender, System.EventArgs e)
    {
       System.Diagnostics.Process[] myProcesses;
       myProcesses = 
          System.Diagnostics.Process.GetProcessesByName("Notepad");
       foreach (System.Diagnostics.Process instance in myProcesses)
       {
          instance.CloseMainWindow();
          instance.WaitForExit(3000);
          instance.Close();
       }
    }
    
  3. Enregistrez tous les fichiers, puis générez et exécutez l'application.

  4. Démarrez plusieurs instances du processus Notepad en cliquant sur le bouton Démarrer le processus.

  5. Cliquez sur le bouton Arrêter le processuspour fermer les processus comme précédemment.

    Vous remarquerez que l'application attend désormais 3 secondes que chaque processus s'arrête avant de fermer l'instance suivante du processus.

  6. Fermez l'application Form1.

Dans cette partie de la procédure pas à pas, vous créez une nouvelle application console qui récupère et répertorie les processus sur l'ordinateur local.

Pour énumérer les processus de votre ordinateur

  1. Créez un nouveau projet Application console.

  2. Ouvrez l'éditeur de code et modifiez la méthode Main pour énumérer les processus sur votre ordinateur :

    Sub Main()
       Dim processes() As Process
       Dim instance As Process
       processes = Process.GetProcesses
       For Each instance In processes
          Console.WriteLine(instance.ProcessName)
       Next
       System.Threading.Thread.Sleep(5000)
    End Sub
    
    static void Main()
    {
       System.Diagnostics.Process[] processes;
       processes = System.Diagnostics.Process.GetProcesses();
       foreach (System.Diagnostics.Process instance in processes)
       {
          Console.WriteLine(instance.ProcessName);
       }
       System.Threading.Thread.Sleep(5000);
    }
    
  3. Enregistrez tous les fichiers, puis générez et exécutez votre application.

    L'application ouvre une fenêtre console avec la liste de tous les processus en cours d'exécution sur votre ordinateur. L'appel de Sleep suspend la console pendant 5 secondes avant de la fermer.

    Remarque :

    Il est possible que vous receviez des exceptions dans ces deux procédures si vous appelez GetProcesses ou GetProcessesByName et que l'un des processus retournés se termine avant l'appel suivant. Dans ce cas, une exception vous signale que le processus n'existe pas.

Voir aussi

Tâches

Comment : spécifier des processus

Comment : arrêter des processus

Autres ressources

Gestion des processus